Hvordan endre størrelsen, endre navn, sortere og Proof Bilder fra Command Line

Dagens ImageMagick leksjon dekker hvordan å endre størrelsen på bilder, endre saken på filtyper, konvertere filformater, konstruere et prøvetrykk av miniatyrbilder, og søke etter og sortere bilder etter deres . Exif data

ImageMagick pakke med bildebehandling og manipulere kommandoer har eksistert evig, og lurer i alle slags steder: det er den bildebehandlings backend i Drupal, Lyx, Openshot, og mange flere. ImageMagick er über-kraftig, og fordi det er et kommandolinjeprogram du kan bygge smarte skript med det og automatisere rutineoppgaver. Du kan vende, speil, endre størrelse, forvrenge, skjær, og rotere bilder gjøre spesialeffekter, redigere farger, og trekke linjer og former; lage miniatyrer, gallerier og bevis ark. Den støtter en Skillion bildeformater og har APIer for en horde av programmeringsspråk, for eksempel MagickCore (C), MagickWand (C), Magick ++ (C ++), JMagick (Java), RMagick (Ruby), TclMagick (Tcl /TK), og flere.

Den mest verdig bruk av ImageMagick jeg noensinne har sett, er å manipulere bilder for Opp-ned-ternet, som er en sleip skript som bruker iptables og ImageMagick å ha det gøy med snyltere som pochere din wi-fi. Det gjen dirigerer sider til Kittenwar! og mangles bilder på andre sider.

man imagemagick viser alle kommandoer. Det er ingen imagemagick kommando. . Displayet kommandoen åpner et grafisk redigering grensesnitt (Fig. 1)


Det opprinnelige bildet var for stort, så jeg endret størrelsen det med konvertitt:

 $ konvertere plotter 1.png -resize 550X fig-1-s.png 

resize verdien er bredden i piksler. Bredde kommer alltid først, og du kan være sikker på ved å sette en x etter verdien, uten mellomrom. Når du angir bare bredden da det nye bildet vil være akkurat som bredde og høyde vil automatisk være i proporsjon. Når du ønsker å angi høyden, gi høyden verdien prefiks med en x, som dette:

 $ convert fiken 1.png -resize x250 fig-1-s.png 

En ting du må å se med de ulike ImageMagick kommandoene er å overskrive originalbildene. . Med konvertitt du bevare den opprinnelige og opprette ny fil ved å gi den et annet navn

Stopp Shouting

Windows og en rekke kameraer er som gamle folk på Facebook: de rope på deg i stor bokstav. My Canon kamera skriver filnavn med store bokstaver, slik at de ser ut som WP7_4117.CR2. Du kan enkelt gjøre alle filtyper små bokstaver med dette Bash one-liner:

 $ for fil i * .CR2; gjøre mv $ fil $ {fil %% CR2.} .CR2; gjort 
Convert Formats

convert kommandoen konverterer bildefilformater. Du kan endre den øvre til små bokstaver besvergelse for å batch-konvertere formater, som dette eksemplet som konverterer .png til .jpg:

 $ for fil i * .png; gjøre konvertere $ fil $ {fil %% png.} .jpg; gjort 

Dette bevarer originalene og skaper nye bilder i det nye formatet med samme filnavn, som dette:

 $ lsbittersweet.jpg bittersweet.png einer-berries.jpg einer-berries.png 

Standardkvalitetsnivået for JPG-filer konvertert fra andre formater er 92. Du kan styre den med -kvalitet alternativet med verdier fra 1 til 100, der 1 er maksimal komprimering og crappiest kvalitet, til 100 som er best kvalitet og minst komprimering. Dette eksemplet bruker 75, som er et anstendig nivå for webbilder:

 $ for fil i * .png; gjøre konvertere -kvalitet 75 $ fil $ {fil %% png.} .jpg; Ferdig 
Proof Sheet

Nå som du har en fin bunke med bilder for å beundre, lage en prøveutskrift, slik at du kan beundre dem alle i en enkelt .jpg:

 $ montage-label '% f'-geometri 350x + 7 + 7' * .jpg "proof-sheet.jpg 

Dette resulterer i noe lignende figur 2, med hvert bilde 350 piksler bred, grenser 7 piksler, og filnavnene til hvert bilde . Hvis du liker en fin ramme i stedet for en vanlig grensen, skaper -frame [verdi i piksler] en ramme rundt hvert bilde, og -mattecolor [farge] lar deg velge rammen farge hvis du ikke liker standard meh grå. Fargenavn forteller deg fargekoder.


Som med all ImageMagick kommandoer er det squillion alternativer. Bruk -pointsize 12 for å sette en skriftstørrelse på 12 poeng, eller andre størrelser som du ønsker, og disse alternativene lar deg finjustere etikettene:

% b - filstørrelse på byte

% m - filformat

% G - image dimensjon i piksler

% Q -. bildekomprimeringsnivå

Det er måten mer, og du kan finne dem alle på ImageMagick rømming.

Trekke Exif

identifisere kommandoen leser Exif-data av fotografier. Du kan enkelt vise en grunnleggende sett av informasjon:

 $ identifisere kitten.jpgkitten.jpg JPEG 3648x2736 3648x2736 + 0 + 0 8-bit DirectClass 4.402MB 0.000u 0: 00.000 

Vil du se alt det er å vite om bildene dine? Prøv dette:

 $ identifisere -verbose kitten.jpg 

Det er en flom av data, slik at du kan finjustere det å lete etter spesifikk informasjon, som hvilke bilder med .CR2 forlengelse i gjeldende katalogen ble tatt med blits:

 $ for fil i * .CR2; identifiserer -format '% [exif: flash] [% f]' $ fil; done16 [WP7_4272.cr2] 16 [WP7_4273.cr2] 9 [WP7_4274.cr2] 9 [WP7_4275.cr2] 

Så ... 9 og 16. Ok. Hva gjør de mener? EXIF flash-koder er kombinasjoner av følgende verdier:

 0: FlashDidNotFire1: FlashFired2: StrobeReturnLightDetected4: StrobeReturnLightNotDetected8: CompulsoryFlashMode16: AutoMode32: NoFlashFunction64: RedEyeReductionMode 

Så 16 betyr at kameraet var i autoblitsmodus, men Blitz ikke utløst. 9 betyr obligatorisk blitsmodus, og det gjorde brann (8 + 1). Så du kan legge til en egrep besvergelse å finne bare de bildene der en flash ble avfyrt:

 $ for fil i * .CR2; identifiserer -format '% [exif: flash] [% f]' $ fil | egrep ^ '1 | 9 | 17 | 65'; gjort 

Legg merke til de områder etter hvert nummer i egrep søkemønster. Som begrenser søket til de eksakte tallene, og filtrerer ut større tall som 11 og 9897 og slikt.

Du kan grave opp noen Exif tag du vil med å identifisere, og ImageMagick Escapes beskriver dusinvis av rømming å bruke. Men det er ikke en komplett liste, så den raskeste måten å se hva tags du kan søke på er å kjøre identifisere -verbose [filnavn], og deretter se på resultatet. Det kommer til å være forskjellig for ulike bildeformater, og det kommer til å variere avhengig av om bildene er redigert, og programvaren som brukes. Her er en forkortet eksempel:

 $ identifisere -verbose WP7_4275.cr2 dato: create: 2014-01-29T16: 35: 34-08: 00 dato: endre: 2014-01-29T16: 35: 34- 08:00 DNG: Aperture: F5 DNG: focallength: 28,0 mm DNG: ISOSpeed: 640 DNG: Objektiv: Canon EF 24-105mm f /4L IS DNG: Modell: EOS 7D exif: Datetime: 2 013: 12: 25 15:59 : 28 exif: Flash: 9 
 Så du kan trekke ut noen av disse på denne måten: 
 $ identifisere -format '% [exif: datetime]% [DNG: aperture]% [DNG: linse]% [DNG: Modellen] 'WP7_4275.cr2 2013: 12: 25 15:59:28 F5 Canon EF 24-105mm f /4L IS EOS 7D 

Dette gir deg en effektiv måte å finne bilder med bestemte egenskaper, som for eksempel linse, kamera, blits eller ingen blits, dato, brennvidde, størrelse, bitdybde ... hvis det er i Exif kan du finne og sortere det

En mer moro Exif tips:. Hvis du kommer til å legge ut bilder på nettet, kan det være lurt å kle Exif-data slik at du ikke gi bort for mye informasjon. Du kan gjøre dette med mogrify kommando:

$ mogrify -stavs kitten.jog

Eller strippe en hel katalog av bilder:

 $ mogrify -stavs /imagesforweb /* 

Rare og true Exif faktum: Selv om det er en mye brukt standard, er det ikke vedlikeholdt av noen. Den gjeldende versjonen, 2.3, ble utgitt i 2010 av Japan Electronics and Information Technology Industries Association (JEITA) og Camera and Imaging Products Association (CIPA). Siden da har det blitt foreldreløse. Anmeldelser