PHP GD2: alfa kanalı şeffaflık ve doğru gama korumak için nasıl

0 Cevap php

Ben tarih görüntülerden küçük oluşturmak için kullanıyorum PHP kodu aynı sorunu muzdarip olduğunu öğrendim this discussion görüntü ölçekleme ve sonradan ilgisini çekti. Ben (2,2-1,0 gamma dönüştürerek resim boyutlandırma, 1,0-2,2 geri gama dönüştürme) altındaki yayınlanan PHP düzeltmeyi denemeye karar verdi. Ancak bu kod için bu değişiklik PNG alfa kanal saydamlık nakavt talihsiz bir yan etkisi vardır, yazıda belirtildiği sorunu çözmek için çalışıyor.

Burada yer gama düzeltme ile olan koddur.

<?php
$image = imagecreatefrompng($source_file);
$resized_image = imagecreatetruecolor($new_wkimlikth, $new_height);
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagegammacorrect($image, 2.2, 1.0);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_wkimlikth, $new_height, $image_wkimlikth, $image_height);
imagegammacorrect($resized_image, 1.0, 2.2);
imagepng($resized_image, $dest_file);
?>

Herkes orijinal görüntünün alfa kanal saydamlık korurken, gamma düzeltme hile istihdam, görüntüyü yenkimliken boyutlandırmak için nasıl biliyor?

Edit

örnek resimler:

  1. Orijinal dosya - alfa kanalı şeffaflık PNG
  2. Her iki Yukarý ile boyutlandırılmış dosyası () işlev çağrıları üzerinden yorumladı
  3. Her iki Yukarý ile boyutlandırılmış dosyası () işlevini yerine çağırır

Eğer gama düzeltmeye kalkmayın kadar şeffaflık iyi olduğunu görebilirsiniz. (Saydamlık aşağıda çalıştığını görmek için en kolay yolu, görüntülerin sarılı paragraf etiketini inceleyin ve bir arka plan eklemek için: black; Kundakçı veya benzeri ile kendi stil özniteliği.)

original image no gamma correction gamma corrected - no transparency

0 Cevap