Man skal lære litt hver dag....kanskje ikke hver dag men sånn innimellom..det kommer jo litt an på hvaor mye man legger inn i det. Men igår når jeg skulle skrive en artikkel så fant jeg ut hvordan jeg kan bli litt mer effektiv, og idag så skal jeg skrive om skrivingen igår. Utrolig.

Poenget er jo det at av og til å har man mange bilder i forskjellige formater og størrelser, som kanskje stammer fra en skjerm-dump, eller noe. Disse bildene er stort sett like store som oppløsningen du har satt skjermen på samt at bildene er ukomprimert. Rå data lagret som BMP-filer. Jeg liker iallefall å ta vare på de originale bildene. Da har man et godt utgangspunkt man alltid kan gå tilbake til når ting går galt. Skal i denne artikkelen bare gå igjennom de viktigste tingene som jeg vet fungerer veldig bra, og det er parameterene -resize, -quality og ingen parameter. Det er 3 ting man komemr langt med.

For det første: Det er snakk om IMageMagick for Linux. Jeg kjører OpenSuSE 11.3. Hvis ikke det er installert kan man kjøre Yast og så installere det ved å søke etter det i "Legg til/installer programmer". Det første man må gjøre er å finne fram konsollen din og så finne et bilde man kan leke med.

1. Konvertering av bilde-formater
Dette er fryktelig enkelt med ImageMagick. Jeg har et skjermbilde fra en test av counterstrike i PNG-format. Det er 640x452px. Skal konvertere det til JPG-format. Da skriver man dette:

edorf@keem:~/Bilder/tomprat> convert counterstrike.png counterstrike.jpg

Om man ser forskjellen eller ikke vet jeg ikke men vi ka n jo se(Flrste er PNG og andre er JPG:

Bilde i PNG-format. 433kb. Ingen komprimering som jeg vet om.


Bilde i JPG-format. 85kb. Ingen komprimering som jeg vet om. Størrelsen på fila er blitt betydelig mindre. Så det kan lønne seg konvertere til en annen filtype

2. Resize/Endre størrelse
Veldig enkelt dette og. Med tanke på størrelsen av kamera-bilder og skjermer osv. så er det klart at man er nødt til å forandre størrelse av og til. Ellers så vil overføringer mellom datamaskiner ta litt mer tid enn nødvendig. Uansett grunn så er det nødvendig av og til. Programmet `convert' trenger nå en ny parameter: `-resize', samt størrelsen på bildet. Av det jeg vet så er standarden i piksler. Dette er jo greit. Vi trenger en parameter til, og det er den nye størrelsen på bildet. På kommandolinjen skriver vi da dette(som eksempel):

edorf@keem:~/Bilder/tomprat> convert counterstrike.jpg -resize 200x100 counterstrike200x100.jpg

Det som skjer med bildet her er at ImageMagick prøver å bevare bredde - høyde forholdet i forhold til det originale bildet. Høyden er bevart, men bredden er blitt mindre enn det jeg spurte om. Dette er jo ganske nyttig, men hva skal vi gjøre hvis vi skal ha 200x100 piksel stort bilde. JO. Vi legger til en utropstegn etter størrelsen slik:

edorf@keem:~/Bilder/tomprat> convert counterstrike.jpg -resize 200x100! counterstrike200x100strict.jpg

Men la oss si at vi må ha bildet til å være 200 piksler høyt. Da er det bare å skrive dette:

edorf@keem:~/Bilder/tomprat> convert counterstrike.jpg -resize x200 counterstrikex200.jpg

Da blir lengden justert slik at forholdet mellom høyde og bredde er bevart i forhold til originalen. Nedenfor kan man se de forskjellige bildene og forandringen av dem:

Vi skrev 200x100 men endte opp med 142x100px


Vi skrev 200x100! og ender opp med et bilde som er strekt ut


Her satt jeg høyden til å være 200 piksler og bredden er strekt ut slik at forholdet mellom høyde og bredde er bevart i forhold til originalen.

3. Rotering/-rotate
Rotering er også veldig viktig. Spesiellt med tanke på at man har en tendens til ta bilder opp ned , stående,...ja...det meste. Her brukes parameteren `-rotate', samt et tall som forteller oss hvor mange grader vi skal rotere det. Den roterer da med klokka. Jeg skal bruke bildet ovenpå som eksempel. Kommandoen blir da slik:

edorf@keem:~/Bilder/tomprat> convert counterstrikex200.jpg -rotate 90 counterstrikex200r90.jpg

Bildet har nå fått en størrelse som er 200x283 og ikke 283x200. Som sagt. Dette er veldig enkelt.

Det siste jeg skal nevne er å komprimere bildet. Her vil/kan man miste en del data Så det er viktig at man oppgir en annen fil slik at man ikke skriver over original-filen.

4. Komprimering/kvalitet/-quality
Som overskriften sier så bruker vi parametere `-quality'. Denne tar igjen en parameter/tall som er angitt i prosent. Vi prøver:

edorf@keem:~/Bilder/tomprat> convert counterstrike.png -quality 70 counterstrikeq70.jpg

Resultatet ser vi nedenfor:

Bildet er like stort som det originale, men kvaliteten er satt ned til 70%. Man ser at helheten fremdeles er der og man kan i grunnen ikke se noen forskjeller hvis man ikke ser godt etter. Fila er nå nesten halvert som er på 43kb. JPG-fila uten komprimering/kvalitets-endring er på 85kb.

Summa-summarum:
Enkelt program med lett-forståelige parametere hvor man kan gjøre ting raskt. Man kan kombinere disse parameterne på ei linje og så være enda mer effektiv:

convert counterstrike.png -quality 70 -resize x200 -rotate 90 counterstrikeq70x200r90.jpg


Dette bildet er det samme som lenger opp men kvaliteten på det er redusert til 70%. Dette gjør at fil-størrelsen har skrumpet ned til 10kb.

Det finnes mange andre parametere for bilde manipulasjon og effekter man kan legge til, men det er har jeg ikke tenkt til å legge til akkurat her. Det er en ting til som kan være veldig nyttig, og det er parameteren `-crop'. Med denne parameteren kan vi kutte bildet(som ikke er det samme som å endre størrelse). Skal gå gjennom dette ved en senere anledning når jeg kan det...