bilder verkleinern

J

janismac

Grünschnabel
hallo

ich möchte bilder in massen verkleinern
dazu möchte ich convert oder mogrify verwenden (beide schon installiert)

nun möchte ich alle bilder aus einem ordner in jpg verwandeln und sie sollen alle die gleiche breite haben, die höhe soll aus der angegebenen breite errechnet werden, so dass das seitenverhältniss gleich bleibt.

kann mir jemand den Befehl dazu schreiben?
ich hab keine idee wie ich da anfangen sollte.
Bitte !!:(

janismac
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

habs selbst hinbekommen

Code:
#!/bin/sh

j=0
if [ ! -d "./con/" ]
then
mkdir "./con/"
fi

for i in $* 
do
	if [ "" != "`echo $i | egrep '(.jpg|.tif)'`" ]
	then
		j=`expr $j + 1`
		while [ -e "./con/out$j.jpg" ] 
		do
			j=`expr $j + 1`
		done
		echo "converting: $i..."
		convert -resize 210x $i ./con/out$j.jpg
	fi
done

janismac
 
Zuletzt bearbeitet:
Hier mal einen den ich mir selbst geschrieben hab. Mit dem kannste die if-Abfrage bei dir rausschmeißen und gleich in dir for-Schleife einbauen. Bei mir wird die Bildgröße aber ned automatische Berechnet. Bei mir ist se Fest.

Der geht alle *.jpg im Ordner "gross" durch und speichert sie verkleinert im Ordner "klein". (EDIT: Der Script befindet sich in dem Ordner "gross")

Code:
#!/bin/bash

for i in $(ls *.jpg)
do
	echo $i
	convert $i -resize 800x600 ../klein/$i
done
 
oder in Perl.... Ich hab mal was zur Erzeugung von Thumbnails gemacht, das liegt mir gerade nicht mehr vor, aber ein Prototyp. Ich nehme mal [noparse]
PHP:
[/noparse][/i][/b]-Tags wegen der schicken Syntaxdarstellung...

Dieser "Prototyp" nimmt erst mal ein bestimmtes Bild, damit habe ich geübt damals.. Das Ding als Funktion und rekursiv [i][[color=orange]Edit[/color]][/i] durch Verzeichnisse [i][/[color=orange]Edit[/color][/i]] machen, Bildernamen als Variable und Skalierungsfaktor anpassen... und es hat eine maximale Höhe und berechnet die Breite neu, das müßte man umkehren.

"newFromJpeg" wäre auch noch was, wo man das Format vorher auslesen müßte (magic oder einfach Dateinamen-Erweiterung).

Ist also keine fertige Lösung, sondern ein Ansatz zum basteln ;)

[php]
#!/usr/bin/perl
use GD;

$bild = "winter.jpg";

#maximale Höhe
$maxh = 200;

# Bild einlesen
$original = newFromJpeg GD::Image($bild);

# Originalgröße auslesen
($br,$ho) = $original->getBounds();

# jetzt die proportionen korrigieren
if($ho > $maxh){
   $faktor = $ho/$maxh;
   $ho2 = $maxh;
   $br2 = $br/$faktor;
}
else {
   $ho2 = $ho;
   $br2 = $br;
};

# neues Bild erstellen(theoretisch)
$neu = new GD::Image($br2,$ho2);

# original in neues reinkopieren
$neu->copyResized($original,0,0,0,0,$br2,$ho2,$br,$ho);

# Die Zahl in Klammern ist der Kompressionsfaktor
# (Bildqualität)
$jpg_data = $neu->jpeg(60);

# Ausgabe als Thumbnail-Datei
# Namen bauen
($f_name,$f_ext) = split(/\./, $bild);

open(THUMBNAIL, ">$f_name-t.$f_ext");
binmode THUMBNAIL;
print THUMBNAIL $jpg_data;
close(THUMBNAIL);
1;
 
Zuletzt bearbeitet:

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

script sshpass

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Dateien löschen mit negierun

Zurück
Oben