|
|
Bu makalenin farklı dillerde bulunduğu adresler: English Castellano Deutsch Francais Nederlands Portugues Russian Turkce |
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: |
Ö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.
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:
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.convert -geometry 60x80 image.gif out.gifkomutu image.gif dosyasını, genişliği 60, yüksekliği 80 olan ölçüye getirir ve oluşan resmi out.gif olarak kaydeder.
#!/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.
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.
<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.
for f in $* ;do convert -geometry 80x80 $f t_$f echo "<a href=\"$f\"><img src=\"t_$f\" width=\"80\" height=\"80\">" doneYukarı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.
convert image.gif image.jpgkomutuyla olur. Dönüştür komutu, dosya adının uzantısından hangi yapıyı kullanması gerektiğini bilir.
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 doneBunun yanında Imagemagick'in bildiği çok miktarda başka yapılar mevcuttur.
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.
identify image.jpg results in image.jpg 340x254 DirectClass 13939b JPEG 0.1u 0:01Bunun 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.
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!
|
Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Katja Socher, FDL LinuxFocus.org |
Çeviri bilgisi:
|
2002-10-30, generated by lfparser version 2.31