Hallo,
wie kann ich mit convert ein Bild auf eine bestimmte Dateigröße konvertieren? Filter und Qualität sollte sich convert am besten selber berechnen.
lg,
Jan
|
Anmeldungsdatum: Beiträge: 104 |
Hallo, wie kann ich mit convert ein Bild auf eine bestimmte Dateigröße konvertieren? Filter und Qualität sollte sich convert am besten selber berechnen. lg, |
|
Supporter
Anmeldungsdatum: Beiträge: 6019 Wohnort: Nürnberg |
Meinst Du Bildgröße oder wirklich Dateigröße? |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 104 |
Bildgröße geht ja mit -size oder -resize. Ich meine Dateigröße. Beispiel: Mit convert -resize breitexhöhe geht ersteres, die Bildgröße. |
|
Anmeldungsdatum: Beiträge: 371 Wohnort: pliezhausen |
Guckst Du hier: man convert Gruß, Margolwes |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 104 |
resize ist doch nur für die Bildgröße nicht für die Dateigröße! |
|
Supporter
Anmeldungsdatum: Beiträge: 6019 Wohnort: Nürnberg |
Also ich würde das rekursiv lösen: Solange die Qualität senken, bis die gewünschte Dateigröße erreicht ist. Ein Skript könnte das sogar automatisch machen |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 104 |
OK, es gibt also keine Option von Imagemagick dafür!? Gibt es bereits eine Lösung dafür? |
|
Anmeldungsdatum: Beiträge: 371 Wohnort: pliezhausen |
OK, es gibt also keine Option von Imagemagick dafür!?
Gruß, Margolwes |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 104 |
Ja, dass habe ich bereits. Hat mich nur gewundert, dass es so was noch nicht gibt. Schade eigentlich. |
|
Supporter
Anmeldungsdatum: Beiträge: 6019 Wohnort: Nürnberg |
Hab grad mal was gebastelt: Langsam, aber ok. Mit jpeg getestet. #!/bin/sh if [ $# -ne 2 ]; then echo usage: $0 size file echo echo size is an integer optionally appended by k or m exit 1 fi RAWSIZE=$1 FILE=$2 NAME=$(basename $FILE) DIR=$(dirname $FILE) SIZE=$(echo $RAWSIZE | sed 's/\(.*\)[km]/\1/') if(echo $RAWSIZE | grep -q 'k$'); then SIZE=$(expr $SIZE \* 1024) fi if(echo $RAWSIZE | grep -q 'm$'); then SIZE=$(expr $SIZE \* 1024) SIZE=$(expr $SIZE \* 1024) fi CS=$(expr $SIZE + 1) Q=101 while([ $CS -gt $SIZE -a $Q -gt 1 ]) do Q=$(expr $Q - 1) convert $FILE -quality $Q /tmp/$$_$NAME CS=$(cat /tmp/$$_$NAME | wc -c) echo -n . done echo echo Quality: $Q Size: $CS File: /tmp/$$_$NAME Also Aufruf in etwa so: $ ./reduce.sh 90k Desktop/Bildschirmfoto.jpeg ............................... Quality: 70 Size: 90963 File: /tmp/11228_Bildschirmfoto.jpeg |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 104 |
Schön, hab es noch nicht getestet, der Algo sieht aber gut aus. Danke |
|
Anmeldungsdatum: Beiträge: 26 Wohnort: Bebra-Solz |
Falls nochmal jemand auf das gleiche Problem stößt, für JPG-Bilder gibt es jetzt eine entsprechende Kommandozeilen-Option bei ImageMagick:
http://www.imagemagick.org/Usage/formats/#jpg_write Die Option probiert auch nur verschiedene quality-Einstellungen durch, es empfiehlt sich also die Verwendung zusammen mit resize. |