Imagemagick kérdések

Fórumok

Sziasztok!

Szeretnék az Imagemagick program convert parancsával képekből levágni bizonyos részeket (az alját, mert végig ott figyel egy fekete csík). Így próbáltam:
/usr/bin/convert file.jpg -crop 1024x760 ./kesz/file.jpg
Meg is csinálja szépen, de eredményül 2 db fájlt kapok, egy file-0.jpg (ez ami maradt) és egy file-1.jpg (ezt vágta le). Mivel sok kép van, ezért nem szeretnék mazsolázni hogy melyik az eredeti és melyik a levágott. Hogy lehet megadni a convert -nek, hogy ne mentse lemezre a levágott részt?
Előre is köszönöm!

Laci

Hozzászólások

Egyszerűbb lenne scriptelni ezt szerintem.

--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!

A megoldás:
/usr/bin/convert file.jpg -crop 1024x760 +delete ./kesz/file.jpg

A +delete kapcsoló törli a második, levágott darabot.

Laci

Ha az eltolásokat is megadod, akkor csak egy kép keletkezik:
-crop 1024x760+0+0

JPEG kepekben lehetnek megjegyzesek (meg persze digigep altal keszitett esetben mindenfele egyeb EXIF-infok). Parancssori kapcsolo nelkul elo lehet-e varazsolni ezeket - azaz a JPEG comment-et es a JPEG EXIF infokat? (Az remlik, hogy a -annotate segitsegevel ra tudtam varazsolni pl. a keszites datumat, de nekem az kellene, hogy nezegetes kozben, ha erdekel, akkor rapillanthassak az altalam a "jhead -cl" -lel belecsodalkozott leirasba, hogy hol is keszult, es mi a francot is abrazol - illetve nyilvan mikor.)

Bocs, most jöttem rá, hogy a lényeg maradt ki: "display" -jel nézem a képet. Azaz nem egy másik parancsot keresek az IM csomagból, hanem ezt az "identify" funkciót a display"-ben. Tegyük fel nyári képeket mutogatok "display"-jel (nem kell flame, hogy a XXXX jobb), és hirtelen közben eszembe jut, hogy esetleg de jó lenne megmutatni, hogy ez a fotó mikor is készült pontosan; nem emlékszem már 5 év múlva, hogy mit is ábrázol, de mivel eredendően beleírtam a JPEG komment-be, ha ezt elő tudnám varázsolni, nem maradnék szégyenben; szóval ilyesmire gondoltam.

Én még az internetforgalmunkat ábrázoló diagramot is ezzel rajzoltatom.
Input: a tűzfal számláló állásait tartalmazó logfájl (percenként egy adatsor).
Feldolgozás: awk + convert parancs
Output: a kész diagram (4db görbe) jpeg képen :-)

---
If you have money, use Windows!
However, if you also have a brain, use Linux!

A log két utolsó sora:
199901162356 2164194989 32574868123 2316 11812
199901162357 2164198293 32574895833 3304 27710

1. oszlop: időpont, 2. és 3. oszlopok: számláló állások, 4. és 5. oszlopok: forgalom, azaz az adott sor számláló állása mínusz az előző soré; ezt az a script számolgatja, ami a logbejegyzéseket teszi.

A diagram rajzoló szkript "rajzoló sora":
$convert -stroke blue -linewidth 2 -fill none -draw "polyline `tail -120 /var/log/dmx/admin/nettraffic.tun | awk '{printf 2*NR "," 2*(100-int($4/50000)) " "}'`" "$celfajl" "$celfajl"

A fenti parancs a logfájl utolsó 120 sorából (azaz 120 perc adataiból) a 4. oszlopot rajzolja a "$celfajl" diagramba (ami egy előre elkészített, megfelelű méretű, felskálázott jpeg kép). A szkriptben van egy ugyanilyen parancs az 5. oszlopra is, a különbség csak annyi, hogy ott ugye a $4 helyett $5 van hivatkozva.

Egy másik parancs 10 perces átlagokat rajzol ki ugyanebből a logfájlból egy másik diagramra (képfájlra):
$convert -stroke blue -fill none -linewidth 2 -draw "polyline `tail -1200 /var/log/dmx/admin/nettraffic.tun | awk 'BEGIN {szum=0} {szum=szum+$4} {if (int(NR/10)==NR/10) ix=ix+1} {if (int(NR/10)==NR/10) printf 2*ix "," 2*(100-int(szum/500000)) " "} {if (int(NR/10)==NR/10) szum=0 }'`" $celfajl10 $celfajl10

Zárójelesen azért megjegyezném, hogy mai fejjel már inkább a gnuplot-al rajzoltatnék ilyen diagramokat, mivel a convert sebessége ebben a felhasználásban azért hagy némi kívánnivalót maga után. Ráadásul a kirajzolható diagram pontok száma sem nagyon haladhatja meg a 120-at, a convert parancssorának korlátozott volta miatt ("argument list too long" hiba).

---
If you have money, use Windows!
However, if you also have a brain, use Linux!