Portál AbcLinuxu, 14. května 2025 05:12

Dotaz: trideni obrazku podle rozliseni (bash)

18.11.2008 21:07 manasekp | skóre: 29 | blog: manasekp | Brno
trideni obrazku podle rozliseni (bash)
Přečteno: 260×
Odpovědět | Admin
zdravim,
mam v adresari spoustu obrazku .jpg, ruzne pojmenovanych(stazene z netu) a potreboval bych do zvlastniho adresare vykopirovat jenom ty obrazky ktere maji alespon rozliseni 1024x768.

Snazil jsem se vytvorit nejaky skript s vyuzitim identify -format '%w' a '%h' coz by ty potrebne obrazky melo rozeznat ale bohuzel vubec neznam bash takze se me nepodarilo toto prepsat do nejakeho funkcniho cyklu a podminky.

za jakekoliv rady dekuji.
BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.11.2008 21:27 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Odpovědět | | Sbalit | Link | Blokovat | Admin
ls -1 *jpg | xargs gm identify | sort -n -k 3

kde gm je z balicku graphicsmagick
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
18.11.2008 21:30 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
lepe gm identify *jpg | sort -n -k 3 ;-)
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
18.11.2008 21:34 Ash | skóre: 53
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi bych nabastlil něco jako:
for i in *.jpg; do
  echo $(identify -format '%w\n%h' $i | sort -nr) | while read hi lo; do
    echo $i: $hi x $lo;
    if [[ "$hi" >= 1024 ]] && [[ "$lo" >= 768 ]]; then
      echo 'mv "$i" "adresar/$i"';
      #mv "$i" "adresar/$i"
    fi;
  done;
done
pro ostrý běh odstranit # před mv... a přejmenovat adresar na jmeno adresare kam chcete kopirovat.
18.11.2008 23:45 Ash | skóre: 53
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Pro milovníky bezpodmínečných řešení :)
for i in *.jpg; do
  echo $(identify -format '%w\n%h' $i | sort -nr) | while read hi lo; do
    [[ "$hi" >= 1024 ]] && [[ "$lo" >= 768 ]] && cp "$i" "adresar/$i"
  done;
done
Přemek Vyhnal avatar 18.11.2008 21:35 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Odpovědět | | Sbalit | Link | Blokovat | Admin
tohle by mohlo zkopirovat soubory *.jpg ktere jsou sirsi nez 1024 (vcetne) a zaroven vyssi nez 768 do adresare velke
for F in *.jpg; do [ `identify -format '%w' $F` -ge 1024 ] && [ `identify -format '%h' $F` -ge 768 ] && cp $F velke/ ; done
NO RAPTORS!
18.11.2008 21:44 manasekp | skóre: 29 | blog: manasekp | Brno
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Odpovědět | | Sbalit | Link | Blokovat | Admin
zdravim, dekuji vsem za reakce, pouzil jsem reseni Premka Vyhnala ktere me prislo velmi jednoduche a elegantni diky nepouziti podminky. Vse bez problemu funkcni.
BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
18.11.2008 23:43 Ash | skóre: 53
Rozbalit Rozbalit vše Re: trideni obrazku podle rozliseni (bash)
Akorát je potřeba ještě jeden upravený průchod pro obr. orientované na výšku, pokud takové jsou.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.