Portál AbcLinuxu, 10. května 2025 07:22
Řešení dotazu:
mkdir small for f in *.jpg ; do convert -resize 1024x1024 "$f" "small/$f" ; done
mogrify -resize 3150x image0*.pngOriginál zazálohuj!
Convert se nemusí dávat do smyčky:
$ convert '*.jpg[200x]' -set filename:out '%t_%wx%h' '%[filename:out].jpg'
Single Letter Attribute Percent Escapes
Filename References
How can I scale all images in a folder to the same width?
#!/bin/bash ROZMER=500 NOVASIRKA=160 NOVAVYSKA=107 for soubor in *.JPG do sirka=`identify -format "%w" $soubor` vyska=`identify -format "%h" $soubor` if [ $sirka == $ROZMER ]; then convert -sample "$NOVASIRKA"x -quality 90 $soubor th_$soubor echo "$soubor byl zkonvertovan z $sirka x $vyska na $NOVASIRKA x $NOVAVYSKA" else convert -sample x"$NOVASIRKA" -quality 90 $soubor th_$soubor echo "$soubor byl zkonvertovan z $sirka x $vyska na $NOVAVYSKA x $NOVASIRKA (na vysku)" fi done
identify.im6: unable to open image `*.JPG': Adresář nebo soubor neexistuje @ error/blob.c/OpenBlob/2638.
identify.im6: unable to open image `*.JPG': Adresář nebo soubor neexistuje @ error/blob.c/OpenBlob/2638.
convert_pictures.sh: řádek 12: [: ==: očekáván unární operátor
convert.im6: unable to open image `*.JPG': Adresář nebo soubor neexistuje @ error/blob.c/OpenBlob/2638.
convert.im6: no images defined `th_*.JPG' @ error/convert.c/ConvertImageCommand/3044.
*.JPG byl zkonvertovan z x na 107 x 160 (na vysku)
shopt nullglob
" nebo testem na existenci) a ne tupě pokračovat s neexistujícím souborem a vyhazovat další a další chyby. Dost pochybný je i automatický předpoklad použití přípony "JPG
" a smysl testu "[ $sirka == $ROZMER ]
" mi uniká (chápal bych, kdyby tam bylo třeba "[ $sirka -ge $vyska ]
", ale test na rovnost s jednou konkrétní hodnotou ne).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.