ImageMagick Türkçe Dil Sorunu ve Geçici Çözümü

Merhabalar,
Daha önce buradan duyurusunu da yaptığım ve üzerinde çalıştığım bir betikte indirilen JPEG görüntülerini animasyonlu bir GIF haline getirmek için ImageMagick paketi içerisindeki convert aracını kullanıyordum. Betiği bitirip Pardus 17.4 üzerinde denediğimde GIF dosyasının animasyonlu bir şekilde oluşmadığını fark ettim. Bunun üzerine sorunun kaynağını araştırmaya başladım ve sürecin sonunda problemin ImageMagick paketinin Türkçe lokalizasyonunda olduğunu keşfettim. Şöyle ki:

Sorun

Terminal üzerinde şöyle bir komut çalıştırdığınızda,

convert resim-1.jpg resim-2.jpg resim-3.jpg -delay 20 -loop 0 deneme.gif

ImageMagick çıktı dosyasının uzantısını anlamak için büyük harfe dönüştürüp, kontrol ediyor büyük ihtimal. Fakat sisteminizde LC_ALL değişkeninin değeri tr_TR.UTF8 ise -ki Pardus’da bu varsayılan olarak böyle geliyor doğal olarak-, o zaman şöyle bir sorun oluşuyor: Bildiğiniz gibi İngilizce’de İ(büyük i) harfi yok fakat Türkçe’de var. Fakat ‘gif’ uzantısı büyük harfe dönüştürülmek istendiğinde, İngilizce’de gif != GİF olduğundan dolayı işlemin sonunda uzantı GiF olarak kalıyor ve ImageMagick bu uzantıyı tanımlamıyor ve gif dosyasını düzgün bir şekilde oluşturamıyor. Eğer yukarıdaki komuta -debug All kısmını eklerseniz kayıtlar arasında şöyle bir hata mesajını göreceksiniz:

2019-01-17T22:57:40+03:00 0:00.160 0.160u 6.9.7 Exception convert-im6.q16[8244]: module.c/OpenModule/1320/Exception
unable to register image format `GiF‘: /usr/lib/x86_64-linux-gnu/ImageMagick-6.9.7/modules-Q16/coders/gif.so: undefined symbol: RegisterGiFImage

Keşfettiğim bu hata ImageMagick tarafından olduğu için kendilerine GitHub üzerinden raporladım. Hatanın olduğunu doğruladılar ve bir sonraki versiyon güncellemesinde düzelteceklerini belirttiler. GitHub issue sayfasına buradan ulaşabilirsiniz.

Geçici Çözüm

ImageMagick geliştiricileri sorunu sağlam bir şekilde çözene kadar, geçici bir çözüm olarak yukarıdaki komutu şu şekilde kullanarak hatadan kurtulabilirsiniz:

LC_ALL=en_US.UTF8 convert resim-1.jpg resim-2.jpg resim-3.jpg -delay 20 -loop 0 deneme.gif

convert komutundan önce yazdığımız kısım sayesinde komple sistemimizin dil ayarlarını değiştirmek yerine sadece o komuta mahsus olacak şekilde bir istisna yapabiliyorsunuz. Bu komuttan sisteminizin dil ayarları etkilenmez.

Güncelleme – 29 Ocak 2019

Bugün itibariyle sorunun çözüldüğü 7.0.8-25 sürümü yayınlandı.

Bu sorunu yaşıyorsanız sisteminizde kurulu olan ImageMagick versiyonunu güncellemeniz sorunu çözecektir. Fakat bir program ya da betik içerisinde kullanıyorsanız, her kullanıcınızda son sürüm olmayacağı için yukarıda önerdiğim çözümü uygulamanız daha iyi olacaktır.

Deney

Hatayı keşfetmek için aşağıdaki C kodlarını deney amacıyla kodladım ve denedim.

Sonuç:

i harfi büyük olmadı.
Reklamlar

Yorum yazmak için;

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s