KlavyeMonitor.com    


Google

JPG Resimleri, Resim Dosya Biçimini İyileştirerek Daha Az Yer Tutan Resimler Biçimine Getirme


Temmuz 2004
İlker Fıçıcılar

 

 Tarayıcıdan taradığımız ya da internetten çektiğimiz jpeg resimler genellikle gereğinden çok yer tutarlar. Bunları, resim niteliğinden vazgeçmeksizin sıkıştırmak olası. Aşağıdaki yöntemle, bir klasörde bulunun bütün jpg resimlerin dosya boyutunu bir kerede yarı yarıya düşürebiliyoruz.

 WWW sayfanız varsa, sayfanızdaki resimleri bu yöntemle sıkıştırmanız www sayfanızın yarı sürede açılmasını, daha çabuk görüntülenmesini sağlayacaktır. Eğer isterseniz resim niteliğini de düşürerek www sayfalarınızın çok daha hızlı açılmasını da sağlayabilirsiniz. Çoğu www sayfasında, düşük nitelikli jpg resimlerin gösterilmesi sorun oluşturmaz.

 Bu yöntem NetPBM paketindeki jpegtopnm ve pnmtojpeg yazılımlarını kullanır. Oldukça kullanışlı olan bu paketi http://netpbm.sourceforge.net/ adresinden edinebilirsiniz.


JPG Resimleri Kayıpsız İki Kat Sıkıştırma

 Aşağıdaki bash betiğini bir dosyaya yazıp ( ben jpgazalt dosya adını kullandım ), dosya yolunuzdaki uygun bir klasöre yerleştirip ( /usr/local/bin 'e örneğin ), çalıştırılabilir dosya biçimine getirdikten ( chmod 755 ile ) sonra resimlerinizin bulunduğu klasöre geçerek bu yeni komutunuzu çalıştırmanız, resimlerinizi iyileştirmeniz (optimize etmeniz) için yeterli:


#!/bin/bash
#
# jpgazalt
#
# JPG resim dosyalarının boyutunu niteliği koruyarak 2 kat azaltır.
#
# v1.0
# Temmuz 2004
# İlker Fıçıcılar
# http://www.KlavyeMonitor.com/
#
ls *.jpg *.JPG|while read resim
do
jpegtopnm "$resim" 2>/dev/null |pnmtojpeg --optimize > .gecici 2>/dev/null
mv .gecici "$resim"
done


JPG Resimleri Kayıplı Üç-Dört Kat Sıkıştırma

 Resim niteliğini biraz düşürerek daha çok sıkıştırmak istersek pnmtojpeg komutuna --quality=... ile nitelik ölçü değerini 75'ten az olacak biçimde verebiliriz. Örneğin --optimize --quality=50 değerleri resim dosya boyutunu üçte birine düşürmek için uygun:


#!/bin/bash
#
# jpgazalt
#
# JPG resim dosyalarının boyutunu niteliği düşürerek 3 kat azaltır.
#
# v1.1
# Temmuz 2004
# İlker Fıçıcılar
# http://www.KlavyeMonitor.com/
#
ls *.jpg *.JPG|while read resim
do
jpegtopnm "$resim" 2>/dev/null |pnmtojpeg --optimize --quality=50 > .gecici 2>/dev/null
mv .gecici "$resim"
done

İçeriği Aynı Olup, Dosya Adı Ayrı Olan Dosyaları Teke İndirme

 Kimi durumlarda, aynı resim dosyası değişik dosya adlarıyla aynı klasörde bulunabilmekte. Bu, birkaç kez yinelenmiş dosyaları bulup sayılarını teke indirerek de resim yığınını gereksiz şişkinlikten kurtarabiliriz.

 ayniazalt adlı aşağıdaki bash betiğini, /usr/local/bin/ayniazalt dosyasına yazıp chmod 755 /usr/local/bin/ayniazalt komutu ile çalıştırılabilir biçime getirerek resim yığının bulunduğu klasörde ayniazalt diyerek kullanabilirsiniz:

#!/bin/bash
#
# ayniazalt
#
# 14 Temmuz 2004
# sürüm: 0.2
# İlker Fıçıcılar
# http://www.KlavyeMonitor.com/
#
# Bir klasördeki aynı dosyaları siler.
#
# Silinen dosyalar /tmp/cop klasöründeki çöp kutusuna, 
# bugünün tarihini taşıyan bir klasöre atılır.
#

cop="/tmp/cop/"
mkdir /tmp/cop

kutu=`date +%Y%m%d`
kutu="$cop$kutu"
mkdir "$kutu" 2> /dev/null
chmod 777 "$kutu"
echo "Çöp kutusu: $kutu"
echo

we="sdsdsdsdsdawewewe"
ls -Sr|grep -v "^\."|while read qw
do
er=0
rt=`file "$qw"|cut -f2- -d:`
ty=`file "$we"|cut -f2- -d:`
if [ "$rt" == "$ty" ];then
diff -q "$we" "$qw" > /dev/null
if [ $? -eq 0 ];then
echo "$we  ==  $qw"
echo $?
echo
ds=`echo "$qw"|grep "(1)"`
if [ "$ds" != "" ];then
mv "$qw" "$kutu"
else
mv "$we" "$kutu"
fi
fi

fi
we=$qw
done

 Bu betiği sadece resimlerde değil her tür dosyada kullanabilirsiniz. Betik, yinelenen dosyaları elerken öncelikli olarak sonunda "(1)" gibi ekler olanları siler. Silinen dosyaları ise /tmp/cop klasörüne taşır.

 

 Bu yazıdaki üç betiği (bash script) aşağıdaki URL'deki zipli dosyada bulabilirsiniz:

  http://www.KlavyeMonitor.com/dosya/dosya_boyutu_azaltma-v1.0.zip

 

Temmuz 2004
ilker Fıçıcılar

 

 
 
   
Bu sayfaları Linux'ta oluşturan programı yazan: İlker Fıçıcılar