[LinuxFocus-icon]
Ev  |  Eri�imd�zeni  |  ��indekiler  |  Arama

Duyumlar | Belgelikler | Ba�lant�lar | LF Nedir
Bu makalenin farkl� dillerde bulundu�u adresler: English  Castellano  Deutsch  Francais  Nederlands  Portugues  Russian  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
taraf�ndan Katja Socher
<katja(at)linuxfocusorg>

Yazar hakk�nda:

Katja, LinuxFocus dergisinin Alman edit�r�d�r. Kendisi Tux, film ve foto�raflardan ho�lan�r, denizi sever. Kendi sanal dokusuna buradan ula�abilirsinizhere.



T�rk�e'ye �eviri:
Murat Mestani <mestani(at)be.itu.edu.tr>

��erik:

 

Kabukta; resimler �zerinde sihir yap�n

[Illustration]

�zet:

Bu makalede Imagemagick sihirbaz�n�n grafik ara�lar�n� kendi hammaddesiymi�, kabu�u da sanki b�y�l� sopas�ym�� gibi kullanarak neleri yapabildi�ine g�z ataca��z.

_________________ _________________ _________________

 

Sihir yapmak

Eski zaman sihirbazlar�(wizard) hammaddelerini al�r, onlar� b�y�k bir kapta birbirleriyle kar��t�r�r b�y�l� sopalar�n� sallar ve sihirlerini f�s�ldarlard��ve aniden birisi kurba�aya d�n���rd�. Modern zaman sihirbazlar�, toplumdaki di�er insanlar gibi olduk�a uzmanla�m��lard�r. B�y� kitaplar� sadece belli ba�l� i�ler i�in birka� b�y� i�ermektedir. Bu demektir ki Imagemagick'in genel ama�l� kullan�m i�in b�y� kitab� yoktur. Pek �ok y�nlerden 'Gimp' veya di�er grafik programlar� ile rekabet edemez ancak �ok kullan��l� olan uzmanla�m�� �zellibbklere sahiptir.
Imagemagick'in ger�ek g�c�, kabukta �al���rken pek �ok uygulaman�n otomati�e ba�lanabilme �zelli�inin alt�nda yatmaktad�r.
Ancak baz� sihirleri anlatmadan �nce k�saca ana ba�l�klar� g�zden ge�irelim:

 

Temel yap� ta�lar�

veya ImageMagick nedir?

ImageMagick, imgelerle �al��abilmek i�in grafik ara�lar�n�n bir araya getirilmi� halidir. Bu ara�lar: g�ster (display), d��ar�dan dahil et (import), canland�rma (animation), monte et (montage), d�n��t�r (convert), mogrify, tan�mla (identify) ve kat��t�r (combine) d�r.
G�ster (display): E�er "g�ster &" yazarsan�z, istenen pencere g�r�n�r ve resmin �zerinde direkt olarak �al��abilirsiniz. Men� �zerinden bir dosya a�abilir, kaydedebilir, silebilir, �evirebilir, d�nd�rebilir, rengini de�i�tirebilir veya resmi i�eri do�ru da��tmak (implode), antetlemek (emboss), etraf�na �er�eve koymak vs. gibi belirli efektler uygulayabilirsiniz
D��ar�dan dahil et (Import) komutuyla t�m ekran�n veya belirli resim veya pencerelerin g�r�nt�lenmesini sa�layabilirsiniz.
Canland�rma (Animate), imgeleri oynatmak i�in bir ara�t�r. Seri haldeki g�r�nt�leri arka arkaya getirmeyi se�ebilir veya canland�r�lm�� gif resmini izleyebilirsiniz.
Monte et (Montage) ile dizili g�r�nt�ler yaratabilir veya canland�r�lm�� bir gif dosyas�n�n i�indeki bir resmi alabilirsiniz.
D�n��t�r (Convert) �ok g��l� bir ara�t�r. Bir resmi ba�ka bir kal�ba (format) d�n��t�rebilirsiniz. �rne�in gif resmini jpeg'e veya ba�ka birine d�n��t�rebilirsiniz. Resmin ebad�n� da de�i�tirebilir ve �zerinde pek �ok efektler uygulayabilirsiniz.
Mogrify, d�n��t�r komutuyla benzerlik g�sterir. En b�y�k fark� mogrify ile mevcut g�r�nt� �zerinde yap�lan de�i�iklikleri kaydedebilirsiniz ancak d�n��t�r komutu ve di�er kullan�lan komutlarda, �zerinde de�i�ik�ik yap�lm�� dosyalar�n nereye kaydedilece�ini g�steren bir dosya belirtmeniz gerekir. Onun i�in ben bu komutu hemen hemen hi� kullanmam.
Tan�mla (Identify), size resmin geometrisi, boyutu, ad�, kal�b� (format) hakk�nda bilgiler verir.
Kat��t�r (Combine) komutu iki veya daha fazla resmi ba�ka bir resme katar. �rne�in her bir resmin �zerine logo koyabilirsiniz.

Ara�lar� kullanabilmek i�in arac�n ad�n�, ard�ndan da hangi se�ene�i istedi�inizi yazman�z gerekir. De�i�tirilecek olan resmin hangi dosya ad� alt�nda saklanaca�� da belirtilmelidir.
�rne�in tux1.gif dosyas�na 3 numara kal�nl�kta �izgi �izmek ve bunu tux1characoal.gif olarak kaydetmek istiyorsan�z
convert -characoal 3 tux1.gif tux1characoal.gif

Bu bilgilerden sonra �imdi de temel yap� ta�lar�na bakal�m ve biraz sihir yapmay� deneyelim:  

Baz� Sihirler

 

Resimlerin y�kseklik ve geni�li�ini de�i�tirme

D���n�n ki son kurbanlar�n�z olarak kurba�aya d�n��t�rm�� oldu�unuz ki�ileri i�eren elinizde y���nla resim var ve bunlar� sanal dokuya (web page) koymak istiyorsunuz. Dosyalar�n y�klenme zaman�n� azaltmak i�in resimlerinizi k���ltmek istiyorsunuz. D�n��t�r komutu ile resimlerinizi daha b�y�tebilir veya daha k���ltebilir veya bunlar� �ok k���k hale (thumbnail) getirebilirsiniz.
convert -geometry 60x80 image.gif out.gif
komutu image.gif dosyas�n�, geni�li�i 60, y�ksekli�i 80 olan �l��ye getirir ve olu�an resmi out.gif olarak kaydeder.

T�m resimlerimizin y�kseklik ve geni�lik olarak �rne�in 80 olmas�n� istiyorsak:
#!/bin/sh
for f in $* ;do
 convert -geometry 80x80 $f t_$f
 echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\"></a>"
done
# end of script
�eklinde yazmam�z gerekir.(Bu sat�rlar� diledi�iniz herhangi bir yaz� edit�r�n�n (vi, emacs, nedit, kedit...) i�ine yaz�n ve ev dizininiz alt�ndaki mksmallimage alt�na kaydedin. Daha sonra bash kabu�una gidin ve
chmod 755 /home/katja/mksmallimage
(katja yerine ev dizininizin ad�n� yaz�n) Ard�ndan /home/katja/mksmallimage xxx.jpg *.gif yaz�n. Bu b�t�n gif dosyalar�n� xxx.jpg de dahil olmak �zere d�n��t�recektir.  

Ku�bak��� (OverWiev) resim yaratma

Elinizde son birka� y�l i�inde kurba�aya �evirdi�iniz t�m ki�ileri i�eren bir CD var. Sizi k�skanan di�er sihirbazlar k�peklerini de kurba�aya �evirdi�inizi ispatlaman�z� istiyorlar ve �imdi siz t�m g�c�n�z� o foto�raf� bulmak i�in harc�yorsunuz. E�er Cd'deki resimler ku�bak��� olsayd� bu durumdan kurtulabilirdiniz. Imagemagick ile bunlar� olu�turmak �ok kolayd�r.
display "vid:*.jpg"
Bu, mevcut dizin i�inde t�m jpg resimlerinin g�rsel resim dizinini olu�turur. Veya:
display "vid:frog/*"
frog dizini i�indeki t�m resimlerinizin g�rsel resim dizinini olu�turur.
Farenizi(mouse) herhangi bir resmin �zerine getirerek sa� tu�la t�klarsan�z bir men� a��l�r. Y�kle(load) komutuyla resmin tam boyutunu g�rebilirsiniz:

[visual image directory]


Bu ku�bak��� resim yaratman�n en kolay yoludur fakat bilgisayar�na ba�l� olarak g�rsel resim dizininin olu�turulmas� zaman al�r. �ok resminiz varsa fazla miktarda haf�zan�n harcanmas� gerekebilir. Bunun i�in �imdi k���k bir mini resim olu�turma (htmlthumbnails) yaz�l�m� haz�rlayarak (ki b�ylece daha az haf�za kullan�labilir) bir sanal doku olu�turaca��z. Mini resimlere t�klayarak orjinal resme ula�abilece�iz.

Bunun i�in html kodu a�a��daki gibidir:
<a href="file.gif"><img src="t_file.gif" width="60" height="80"></a>
Orjinal dosya file.gif, mini resim ise t_file.gif'tir.
�imdi mini resim olu�turan bir yaz�l�m ve ard�ndan kendimiz i�in html kodunu yazaca��z.
for f in $* ;do
 convert -geometry 80x80 $f t_$f
 echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\">"
done
Yukar�daki yaz�l�m, komut sat�r�nda belirtildi�i gibi t�m resimler �zerinde bir �evrim olu�turarak mini resimler yarat�r ve html kodunu ekrana yazar. B�ylece html kodunu sanal dokumuza kopyalay�p yap��t�rabiliriz.
Kabuk yaz�l�m�n� tamamlamak i�in yard�m metni ve hata kontrolu ekleriz. A�a��da yaz�l�m�n en son halini bulabilirsiniz.
htmlthumbnails (html for viewing), htmlthumbnails (text for download)
 

Resmin yap�s�n�(format) de�i�tirmek

D�n��t�r komutu yaln�zca resmin ebad�n� de�i�tirmez ayn� zamanda yap�s�n� da de�i�tirir. �rne�in gif resmini jpg'ye veya ba�ka bir �eye �evirebilirsiniz. Bunu yapmak basit�e:
convert image.gif image.jpg
komutuyla olur. D�n��t�r komutu, dosya ad�n�n uzant�s�ndan hangi yap�y� kullanmas� gerekti�ini bilir.
Elimizde mevcut pek �ok resmin yap�s�n� jpg'den gif'e �evirmek i�in:
for f in $* ;do
 if echo "$f" | grep -i "jpg$" > /dev/null ; then
   gif=`echo "$f" | sed 's/jpg$/gif/i'`
   echo "converting  $f to $gif ..."
   convert 80x80 $f $gif
 else
   echo echo "$f is not a jpg file, ignored"
 fi
done
Bunun yan�nda Imagemagick'in bildi�i �ok miktarda ba�ka yap�lar mevcuttur.  

T�m resimlerinize logo koymak

Sa�da g�rd���n�z gibi farkl� resimlere k���k bir logo eklemek istiyoruz. [linuxfocus stamp]

Bu logonun �effaf bir gif resmi olmas� gerekir. Logomuzun, en son resimde k���k bir imza gibi sa� alt k��eye yerle�mesi gerekir. A�a��daki tux resminde bunu g�rmektesiniz:

[tux with logo]

Bunu g�rmek i�in ne komutu gerekir?
Kat��t�r(combine) komutu 2 resmi yeni bir resme d�n��t�rmek i�in kullan�labilir. Pek �ok se�enek programa nas�l yap�laca��n� s�yleyebilir.
combine -gravity SouthEast -compose Over img.jpg logo.gif stamp_img.jpg
"gravity SouthEast" se�ene�i logo.gif'I sa� alt k��eye koyar. "compose Over" �st�ste binmenin oldu�u yerde resmin logoyla yer de�i�tirece�ini s�yler.

Tam fonksiyonlu kabuk yaz�l�m� elde edebilmek i�in komutu for �evriminin i�ine sokar ve yine yard�m metni ve hata kontrolu ekleriz. A�a��da stampimages ad� alt�ndaki en son kabuk yaz�l�m�n� g�rmektesiniz:
stampimages (html for viewing), stampimages (text for download)
 

Resim �zellikleri hakk�nda bilgi alma

Tan�mla(identify), resmin tipi(boyutu ve geometrisi) hakk�nda detaylar� g�sterir. Bu a�a��daki gibi yap�l�r:
identify  image.jpg
results in
image.jpg 340x254 DirectClass 13939b JPEG 0.1u 0:01
Bunun bizim sihirbaz�m�zla ne ilgisi var diye sorabilirsiniz. Ancak iyi bir sanal doku dizayn edebilmek i�in daha sayfalar y�klenirken t�m resimlerin ger�ek geometrisini verebilmelisiniz. Html kodu a�a��daki gibi olacakt�r:
<img src="image.jpg" width="340" height="254" alt="[sample picture]">
Resimlerimizin farkl� boyutlar� varsa ve herbirinin y�kseklik ve geni�liklerini bilmiyorsak yard�m etmesi i�in tan�mla(identify) komutunu kullan�r�z. "Tan�mla" komutunun ��kt�s�n� okuyup bu sat�r� yazd�ran bir kabuk yaz�l�m� olu�tururuz. Resmin geometrisi, "tan�mla" program�ndaki ��kt� s�ras�n�n ikinci parametresidir. Bu parametreyi elde etmek i�in awk komutunu kullan�r�z:
identify  image.jpg | awk '{print $2}'
results in
340x254
�imdi bu geometriyi y�kseklik ve geni�li�e b�lmemiz gerekir. Bu da:
echo 340x254 | sed 's/[^0-9]/ /g' | awk '{print $1}'
�eklinde olur ki bu da geni�li�i verir. Y�kseklik ise:
echo 340x254 | sed 's/[^0-9]/ /g' | awk '{print $2}'
Kabuk komutlar�na �ok fazla yo�unla�may�n. E�er hen�z tam olarak anlamam��san�z sadece verildi�i �ekliyle kabul edin. Bir sonraki LinuxFocus say�s�nda kabuk programlamas� �zerine bir makale yay�nlanacak. Orada t�m sihrini size a��klayaca��z. Yaz�l�m�n son hali a�a��daki bibi olacakt�r:
file=$1
geometry=`identify $file | awk '{print $2}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$file\" width=\"$width\" height=\"$height\">"
kabuk yaz�l�m�n� tamamlamak i�in gene yard�m metni ve hata kontrolu ekliyoruz. A�a��da imgsrcline ad�ndaki en son kabuk yaz�l�m�m�z bulunmaktad�r.
imgsrcline (html for viewing), imgsrcline (text for download)


Imagemagick ile oynarken d�k�manlar ile ger�ek fonksiyonalite aras�nda bazen uyumsuzluklar g�rd�m. Baz� �zellikler de tam sabit de�il. Siz yukar�da g�sterilen �eyleri uygularsan�z gene de �ok faydal� oldu�unu g�receksiniz. Yukar�da listelenen fonksiyonlar �al���r haldedir. Ben ImageMagick-4.2.9 , ImageMagick-5.2.9 ve ImageMagick-5.3.0 versiyonlar�n� kulland�m ve burada ��rendi�iniz �zellikler hepsinde �al��maktad�r.

Umar�m ImageMagick ile neler yapabilece�iniz konusunda bir fikre sahip olmu�sunuzdur ve yaz�l�mlar� kullanabileceksinizdir veya kendi sihirlerinizi bile yaratmaya ba�layabileceksinizdir.
�yi e�lenceler!

 

Referanslar

 

Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz

Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.
 talkback page 

G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Katja Socher, FDL
LinuxFocus.org
�eviri bilgisi:
en --> -- : Katja Socher <katja(at)linuxfocusorg>
en --> tr: Murat Mestani <mestani(at)be.itu.edu.tr>

2002-10-30, generated by lfparser version 2.31