Et vakkert og stort bilde er omtrent stort; Det er vanligvis ledsaget av enorm kvalitet. Imidlertid er det mange, mange ganger når du ikke har råd til å ha bilder som er for store i størrelse. Noen ganger er alt du vil ha et anstendig størrelse eller til og med et som er mindre enn en bestemt gitt størrelse. I slike tilfeller er alle programmerer ønsker for en måte å finne en mellomgrunn mellom kvalitet og størrelse. Teoretisk sett, hvis du gir opp kvaliteten helt, bør ikke filstørrelse være et problem, men den virkelige avtalen er å finne et kompromiss mellom kvalitet og filstørrelse. I denne opplæringen diskuterer vi måter å redusere filstørrelsen på bilder ved å bruke ImageMagick (uten at det går ut over kvaliteten for mye).
Installere Imagemagick
Vi trenger Imagemagick for dette, så først, la oss installere det:
sudo apt-get installer imagemagick
Kvalitetsbryteren
Den første og enkleste måten å redusere størrelsen på et bilde/bilde/video er å redusere kvaliteten på bildet. Kvalitetsbryteren representerer JPEG/MIFF/PNG -kompresjonsnivået. For JPEG og MPEG representerer en kvalitet på 1 det høyeste komprimeringsnivået og den laveste bildekvaliteten, mens 100 representerer det minste komprimeringsnivået og den beste kvaliteten.
Så la oss se på et eksempel; Bildet jeg tok av et tre er 4624 × 3468 når det gjelder oppløsning og er 5.70226MIB. Dette er originalbildet, en jpeg, for å være spesifikk.
Nå er poenget at vi ønsker å redusere størrelsen på bildet. Så la oss prøve å angi kvalitetsbryterinnstillingene til noe litt annerledes og se hva som skjer.
Konverter tree_4624x3468.jpg -kvalitet 75 tree_4624x3468_quality75.jpg
Konverter tree_4624x3468.jpg -kvalitet 25 tree_4624x3468_quality25.jpg
Jeg reduserte kvaliteten til 75 for ett bilde og 25 for et annet. Det originale bildet var 5.70226mib, men bildet som var en kvalitet på 75 ble 2.74664MIB Mens av kvalitet 25 ble 1358250 (1.295mib). Her vil jeg personlig gå med 75% kvaliteten.
Nå, siden vi også bryr oss om den faktiske kvaliteten på bildet, la meg vise deg bildene:
tree_4624x3468_quality75.jpg
tree_4624x3468_quality25.jpg
Som du ser har kvaliteten ikke blitt påvirket for mye, men filstørrelsen er mindre.
Nå prøvde jeg å gjøre det samme med PNG, og det er dette jeg fikk:
Så det gikk fra 23501600b (22.413mib) til 22.2854mib. For en jpeg gikk den fra 5.70226mib til 1.295mib. For ikke-tapsformater som PNG er kvalitetsbryteren mye tøffere.
Endre størrelse på bilder
Endre størrelse på bilder er en annen måte. For eksempel:
Konverter tree_4624x3468.jpg -resize 50% x50% tree_4624x3468_resize50%.jpg
Som du tydelig kan se, var bildet som var 4624 × 3468 5.70226MIB, mens den som var 2312 × 1734 bare er 1.56287MIB.
Definer -bryteren
Definer -bryteren blir fulgt av en nøkkel og dens gitte verdi.
-Definer nøkkel = verdi ..
Listen over mulige nøkkelverdier finner du på https: // imagemagick.org/manus/definerer.PHP.
For PNG kan du bruke PNG: kompresjonsnivå = verdi. Verdien kan være alt fra 0 til 9. En verdi på 0 vil gi deg minst komprimering, men den er rask, og en verdi på 9 vil gi deg den beste komprimeringen, men er den tregeste. Alt i mellom går også.
For eksempel:
Konverter tree_4624x3468.PNG -Define PNG: Kompresjonsnivå = 9 Tree_4624x3468_Compression9.png
I de fleste tilfeller er det en programmerer ønsker å sette en maksimal størrelse for et bilde. Så antar at for en forekomst at du vil sette en maksimal størrelse for et bilde. Du kan bruke definer -bryteren til å gjøre dette.
-Definer jpeg: omfang = størrelse
Konverter tree_4624x3468.JPG -Define JPEG: omfang = 1MB Tree_4624x3468_extent1mb.jpg
Som du kan se på bildet over, satte det det til en oppløsning på 4624 × 3468 og en størrelse på 0.897mib. Så som du ba om, har Imagemagick laget et bilde som er mindre enn maksimal størrelse på 1 MB.
Strip Switch
Bilder vi tar med kameraer kommer med metadata. Å fjerne metadataene kan også rydde opp litt plass. I Imagemagick gjør vi dette ved hjelp av stripebryteren.
Konverter tree_4624x3468.jpg -strip tree_strip.jpg
Her, som du ser, er det originale bildet 4624 × 3468 og 5.7mib. Men bildet som har fått sine metadata strippet er 4.65mib.
ColorSpace Switch
Du kan også prøve å bytte opp fargelappen. I dette første tilfellet blir jeg grå.
Konverter tree_4624x3468.JPG -ColorSpace Gray Tree_Gray.JPG -Quality 75
Som du kan se, er reduksjonen av bildestørrelsen ikke for stor, men det er en reduksjon - fra 5.70226MIB til 4.44997MIB.
Alternativt prøvde jeg også følgende:
Konverter tree_4624x3468.png -kolorspace grå tree_graypng.png
Når det gjelder en PNG, er mitt originale bilde, det er 4624 × 3468, 22.42mib, men når jeg blir grå, blir den 8.88mib.
Farger bryter
Du kan også velge å endre antallet farger som brukes. I dette tilfellet skal jeg bare bruke 16 farger på en PNG.
Konverter tree_4624x3468.PNG -Colors 16 Tree_4624x3468_16Colors.png
Den opprinnelige PNG var 4624 × 3468 og 22.42mib. Imidlertid, da jeg endret fargene til bare 16, ble bildet 4.27mib i størrelse. Og bildet ser slik ut:
tree_4624x3468_16Colors.png
Bruke flere brytere
Nå trenger du ikke å bruke en eneste bryter på et bilde! Du kan kombinere så mange brytere du vil på et bilde.
Så i eksempel 1 skal jeg ta et PNG -bilde av et tre. Dette originale bildet er 4624 × 3468 og 22.42mib i størrelse, og jeg skal bruke flere brytere og se hvor det tar meg.
Konverter tree_4624x3468.PNG -Strip -Resize 75% X75% -defin PNG: Kompresjonsnivå = 9 -kolorspace Gray Tree_4624x3468_Rededstørrelse.png
Så denne PNG, med en original størrelse på 22.42mib, ble til et bilde av 5.3MIB. Det resulterende bildet er omtrent 23% av den opprinnelige størrelsen.
Så neste, la oss sjekke ut en JPG.
Konverter tree_4624x3468.JPG -Kvalitet 75 -Resize 75% X75% -Strip -Colors 16 Tree_4624x3468_Rededstørrelse.jpg
Så her, for JPG, gikk vi fra en original størrelse på 5.7mib til omtrent 2.2mib for et farget bilde.
Men hvis det ikke var farget:
Konverter tree_4624x3468.JPG -Kvalitet 75 -Resize 75% X75% -Strip -ColorSpace Gray Tree_4624x3468_Rededstørrelse.jpg
Her gikk vi fra en original størrelse på 5.7mib til 1.6mib for et grått bilde.
Hvis du hadde ønsket det, kunne du ha satt en maksimal grense for størrelsen også. Poenget er at du kan redusere størrelsen hvis du virkelig setter tankene til det.
Konklusjon
Når vi skriver kode for et bestemt formål, har vi en tendens til å bruke bilder også, og noen ganger har vi bare ikke råd til å ha bilder som er for store i størrelse. I slike tilfeller er hovedfokuset for programmereren å finne et kompromiss mellom størrelsen på bildet og kvaliteten på bildet. Vi vil ikke bruke bilder som har for lav kvalitet, men vi har heller ikke råd til å ha bilder i stor størrelse. Så vi trenger måter å redusere størrelsen på bildet. ImageMagick tilbyr en rekke måter å redusere størrelsen på bildet ditt i form av forskjellige brytere - kvalitet, endre størrelse, definere osv. Du kan bruke en eller flere av dem til å justere størrelsen på bildet.