ImageMagick Batch Convert

ImageMagick Batch Convert
Vanligvis kan vi skrive ut en kodelinje for å transformere et bilde, enten det er for beskjæring, endringer osv. Med Imagemagick er det hele ganske enkelt nok. Men antar at for en forekomst at vi hadde 1000 bilder som måtte endres, hva gjør vi? Skriv ut kommandoen 1000 ganger? Det ville være dumt, ikke sant? Dette er når vi bruker batchkonverteringene. Hva dette betyr er at vi kan være smarte med 1000 transformasjonen og skrive noen få kodelinjer for å sikre at prosessen blir utført jevnt og enkelt. I utgangspunktet trenger vi ikke å skrive ut 1000 kommandoer. I denne opplæringen lærer vi hvordan du konverterer bildene i ImageMagick.

Installere Imagemagick

Vi trenger Imagemagick for denne prosessen. La oss først installere den ved hjelp av følgende syntaks:

sudo apt-get installer imagemagick

Mogrify

Anta at vi har 1000 bilder som alle har “.PNG ”utvidelse. Anta videre at vi ønsker å forvandle dem alle til en ".jpg ”-fil.

Nå som vi er ferdige med å anta, kan vi begynne å skrive koden.

Mogrify -format jpg *.png

Her forteller vi Imagemagick at det er mange “.PNG ”bilder for å bruke hver enkelt med en“.PNG ”utvidelse. Vi forteller deretter Imagemagick med formatbryteren for å transformere bildet til et JPG -bilde. Her forhindrer formatbryteren at bildene blir overskrevet. Vanligvis er skillet mellom Mogrify og konvertering at Mogrify overskriver de originale filene. Men dette er ikke tilfelle når vi bruker formatbryteren (et unntak fra regelen).

Den store delen med dette lille kodestykket er at det vil konvertere så mange bilder du vil. Og det er en enfore! I dette tilfellet lagrer vi imidlertid alle de nye filene i samme mappe som de gamle filene.

Anta at jeg vil lagre dem i en helt annen katalog helt. Vi har en haug med *.JPG og vi lagrer dem i en ny mappe som heter NewMeholder. Anta videre at de originale filene er i nedlastingsmappen.

(Ideen her er at alle originale filer er i nedlastingsmappen, og vi oppretter en mappe kalt nymapp for å dumpe de transformerte bildene.)

CD -nedlastinger
MKDIR NEWFOLDER
Mogrify -format Png -Quality 100 -Path ~/Downloads/Newfolder *.jpg

Så hva som skjer her? Vi bruker MoGrify -kommandoen og legger til en ny bryter som heter Path. Stiebryteren sikrer at de nye bildene som ble opprettet ble dumpet i den spesifiserte mappen (nymappen).

La oss nå anta at vi har en kombinasjon av JPG -bilder og PNG -bilder, og vi ønsker å forvandle dem til JPEG.

Mogrify -format jpeg *

I dette tilfellet, i stedet for å spesifisere hvilke bilder vi vil konvertere, legger vi bare en stjerne. Stjernen betyr å konvertere alt.

Hvis det er mapper der, vil det også være krasj, så bruk banebryteren også.

Konvertere

La oss nå skrive noe litt annerledes ved å bruke Convert -kommandoen i stedet for MoGrify -kommandoen (MoGrify -kommandoen overskriver de originale filene).

konvertere *.PNG -RESIZE 1234x1234 Størrelse-%D.png

Hva la du merke til her? Vi gjorde batchkonverteringen ved hjelp av Convert -kommandoen. For å gi nytt navn til filen, bruker vi begrepet “endret størrelse-%d.PNG ”. Hva er dette "%d" -tegnet i navnet? Resten av navnet gir mening, ikke sant? Og “%d” betyr å nummerere dem med 0, 1, 2, etc.

Nok et raskt eksempel:

konvertere *.PNG -RESIZE 1234x1234 Størrelse-%03D.png

Hva betyr "%03D"? Vel, se på utgangen. Det gir nytt navn med 3 sifre denne gangen. Nå, i stedet for å se størrelse på 0.PNG, vi ser de endret størrelse-000.png.

Løkker

Du kan også skrive løkkene.

for f in *.JPG; Konverter "$ f" -kvalitet 85 "$ f".PNG; Ferdig

I dette tilfellet bruker vi fortsatt en en-foring, men det er litt mer sammensatt. I dette tilfellet sier vi at for hvert bilde som heter F, konverterer vi bildet og gir nytt navn til “$ f.PNG ”. Som du kanskje har lagt merke til, hvis bildet kalles “Image1.JPG ”, den gir den til å" Image1.jpg.PNG ”. Denne kommandoen er litt feil, så la oss se på de andre måtene å gi nytt navn til bildet.

Tidligere brukte vi MoGrify -kommandoen. Den overskrev ikke bildene på grunn av formatbryteren. Men hadde formatbryteren ikke vært der, når du endrer størrelse på for eksempel, ville den ha overskrevet filen. Så hva om vi vil bruke Convert -kommandoen?

for fil inn *.PNG; Konverter $ File -Resize 1275x1222 Endre størrelse- $ -fil; Ferdig

La oss prøve å forstå denne kommandoen.

Den første delen av kommandoen er som følger:

for fil inn *.PNG;

*.PNG refererer til alle PNG -filene. Hva dette betyr er "for en enkelt fil i haugen med filer".

Kjernekommandoen er som følger:

Konverter $ File -Resize 1275x1222 Endre størrelse- $ Fil

Denne delen tar ganske enkelt $ -filen (en fil) og endrer størrelse ved hjelp av størrelse på størrelse og deretter chucks ut en fil som heter endret størrelse- $ -fil.

Vi slutter da med ferdig. Denne delen er åpenbar nok.

Lett nok, ikke sant?

Konklusjon

Batch -konvertering er en veldig nyttig prosess. Det forhindrer oss i å måtte skrive en kommando på nytt en million ganger. I Imagemagick er den enkleste måten å transformere en million bilder ved å bruke MoGrify -kommandoen. Imidlertid, hvis ikke brukt i forbindelse med formatbryteren, skriver den over det originale bildet. For eksempel, hvis du bruker MoGrify -kommandoen for å konvertere en haug med bilder for å endre størrelse på dem, overskriver det originale bilder. Noen ganger kan dette ikke være det du vil, og i slike tilfeller kan du ty til å skrive et lite manus. Selve skriptet er en en foring, og du kan bruke Convert -kommandoen hvis du ønsker det, så det er den gode delen. Men det er litt mer sammensatt enn de enkleste av batchkonverteringene som er gjort ved hjelp av Mogrify -kommandoen. Uansett er poenget at du ikke lenger trenger å transformere ett bilde om gangen. Du kan gå videre med batch -konverteringene som kan konvertere tusenvis av tusenvis av bilder på et øyeblikk.