Görüntülerinizi kaydetmek için doğru formatı seçmek, görüntü kalitesini korumak ve eserleri azaltmak için çok önemlidir. Farklı formatlar farklı sıkıştırma yöntemlerini takip eder ve kendi avantajları ve dezavantajları ile birlikte gelir.
Örneğin JPG, renk gradyanları bakımından zengin gerçek yaşam fotoğrafları için uygundur. Kayıpsız PNG ise şematik rakamlara gelince çok daha üstün:
Çok sayıda dosyayla çalışırken doğru formatı seçmek bir angarya olabilir. Bu yüzden onu otomatikleştirmenin bir yolunu bulmayı çok isterim.
Özel kullanım durumumla ilgili biraz arka plan:
Üniversitemdeki bir dizi konferans için çok sayıda çalışma üzerinde çalışıyorum. Ders notları, PDF formatındaki slaytlardan çıkarmam gereken rakamlar bakımından zengindir. Bu görüntüleri çıkarmak, zaman zaman gereksiz yere büyük olan kayıpsız PNG'ler veriyor.
Bu belirli dosyaları JPEG'e dönüştürmek, aynı kaliteyi korurken, boyutlarını orijinal dosya boyutlarının% 20'sine kadar küçültebilir. Kelime işlemcilerde yüzlerce büyük resimle çalışmak, çarpışma eğilimli olduğu için bu önemlidir.
Tüm çıkarılan PNG'leri JPEG'lere dönüştürme toplu çoğu resim PNG olarak biçimlendirilmeye daha uygun değilse, izlemeye istekli olduğum bir seçenek değil. Bunları dönüştürmek önemsiz boyut küçültmelerine ve bazen dosya boyutunda da artışlara yol açacaktır - en azından testimin gösterdiği şey buydu.
Bundan alabileceğimiz, sıkıştırma işleminden sonraki dosya boyutunun, belirli bir görüntü için hangi formatın en uygun olduğuna dair bir gösterge olabileceğidir. Bu özellikle kesin bir tahmin değil, ancak yeterince iyi çalışıyor. Öyleyse neden bir senaryo şeklinde kullanmıyorsunuz:
Dahil ettim inotifywait Çünkü çıkartılmış bir görüntüyü bir klasöre sürüklersem komut dosyasının otomatik olarak çalıştırılmasını tercih ederim.
Bu, son birkaç haftadır kullandığım betiğin daha basit bir versiyonudur:
#!/bin/bash
inotifywait -m --format "%w%f" --exclude '.jpg' -r -e create -e moved_to --fromfile '/home/MHC/.scripts/Workflow/Conversion/include_inotifywait' | while read file; do mogrify -format jpg -quality 92 "$file"
done
Komut dosyasının ileri sürümünün
- Dosya isimlerinde ve dizin isimlerinde boşluk kullanabilme
- orijinal dosya adlarını koru
- bir alfa değeri ayarlanmışsa PNG görüntülerini düzleştir
- Geçici olarak dönüştürülen görüntü ile orijinal arasındaki dosya boyutunu karşılaştır
- farkın belirli bir yüzdeden büyük olup olmadığını belirleyin
- uygun davran
Gerçek dönüşüm, imagemagick araçlarıyla yapılabilir:
convert -quality 92 -flatten -background white file.png file.jpg
Maalesef, bash becerilerim yukarıdaki şemayı gerçek bir betiğe dönüştürecek kadar gelişmiş bile değil, ama çoğunuzun yapabileceğinden eminim.
Buradaki itibar puanlarım oldukça düşük, ancak memnuniyetle belirleyebileceğim en yüksek ödülle en yararlı cevabı vereceğim.
Referanslar: http://www.formortals.com/introducing-cnb-imageguide/ , http://www.turnkeylinux.org/blog/png-vs-jpg
Düzenle : Ayrıca, bu betiğin neden karşılaştığım soruna en iyi çözüm olacağını düşündüğüm hakkında daha fazla bilgi için aşağıdaki yorumlarıma bakınız.