Php’de, transparent png’li resmi beyaz arkaplanlı jpeg resime dönüştürmek

Png uzantılı resimi jpege dönüştürmeye çalıştığımızdabir takım sıkıntılarla karşılaşmaktayız. Mesela eğer resim dosyasının uzantsını png’den jpege dönüştürüp sonra crop benzeri işleme tabi tuttuğumuzda resimden arta kalan siyah bir görüntü olmakta
Bu durumla karşılaşmamak için resimimizi aşağıdaki gibi kod bazlı işleme tutmak lazım.

$image = imagecreatefrompng($originalFile); imagejpeg($image, $outputFile, 100)
yukarıdaki kodda $originalFile değişkeni ile png uzantılı dosyamızın yolunu giriyoruz. Bir alt satırda ise resimi jpeg formatına dönüştürmekteyiz.
Şimdi karşımıza bir başka sıkıntı daha çıkacaktır. Bildiğiniz üzere jpeg formatı transparent özelliğini desteklememektedir. Pngli resimde transparentli yerler var ise jpeg e çevirdiğimizde, resmimizdeki yerleri siyaha dönüştürecektir.

Şimdi bahsetmiş olduğum sorunları aşağıda yazmış olduğum “ImageConverter” isimli class dosyası ile çözmüş olacağız.
<?php
class ImageConverter
{
public function png2Jpeg($originalFile, $outputFile)
{
$image = imagecreatefrompng($originalFile);
$image = $this->imageTransToWhite($image);
imagejpeg($image, $outputFile, 100);
imagedestroy($image);
}
private function imageTransToWhite($trans)
{
$w = imagesx($trans);
$h = imagesy($trans);
$white = imagecreatetruecolor($w, $h);
$bg = imagecolorallocate($white, 255, 255, 255);
imagefill($white, 0, 0, $bg);
imagecopy($white, $trans, 0, 0, 0, 0, $w, $h);
return $white;
}
}
?>
yukarıdaki class’da yapılan işlemleri açıklamak istersek;
“png2Jpeg” isimli fonksiyona ilgili parametreleri göndererek çağırıyoruz. $originalFile paramteresine pngli dosyanın yolunu belirtiyoruz (Örn: enes.png). $outputFile değişkeni de jpeg uzantılı dosyanın yolunu veriyoruz (Örn: enes.jpg). “imagecreatefrompng” fonksiyonu ile pngli resimi image isimli değişkene atıyoruz. Bir aşağıdak satırda “imageTransToWhite” isimli fonksiyonu çağırıyoruz. Eğer resmimizde transparentli yer var ise transparent olan yerleri bizim için beyaza dönüştürecektir. “imagejpeg” fonksiyonu ise pngli resmimizi bir güzel jpeg formatına dönüştürecektir. Daha sonra ise “imagedestroy” fonksiyonu ilede png uzantılı resimle işimizin bittiğini söylüyoruz.

Yazmış olduğum classı güle güle kullanın efem. ![]()
1 Yorum bulunmaktadır - “Php’de, transparent png’li resmi beyaz arkaplanlı jpeg resime dönüştürmek”
Yorum Yapın
Etiketler
Son Yazılar
- Cep telefonu kullanıcılarını mobil siteye nasıl yönlendirilir?
- require vs require_once
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak
- Bmp uzantılı resim dosyasını jpg veya png olarak kaydetmek
- Php Resim Boyutlandırmasında Memory Limit sorunu
Son Yorumlar
- Php’ de Ajax yardımıyla dosya yükleme (File Upload) için chat
- Asp.Net’de Ajax kullanılarak CAPTCHA için Enes Pekkaya
- Asp.Net’de Ajax kullanılarak CAPTCHA için Cenk
- JQuery Form Kontrol için Sedat Kumcu
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için Enes Pekkaya
Haftanın Özlü Sözü
Bağlantılar
- Hayata Tat Kat
- Innova Bilişim Çözümleri
- Onur Değerli
- Pleksus Bilişim Teknolojileri
- Sinan Gül
- Taner Günal
- Toppik – Minoxil
Arşivler
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009


süper! gerçekten çok teşekkürler