PHP nasıl saydam PNG dosyaları tonu olabilir?

2 Cevap php

Ben şeffaf PNG görüntü var. Saydam alanlar tamamen şeffaf kalması gerekir, ancak diğer alanlarda belirli bir renk ile renklendirme gerekir.

GD kullanarak bunu yapmak için en iyi yolu nedir?

Cheers,
James

2 Cevap

Yukarıdaki çözüm benim için işe yaramadı.

You are filling alpha region here with red; that I believe is not the objective. Objective is to tint the rest of the image and leave the alpha unchanged. (Also, wrong use of function imagecolorallocate, you should use imagecolorallocatealpha.)

Ben imagefilter kullanmak ve aşağıdaki gibi renklendirmek başardı:

imagefilter ($ image, IMG_FILTER_COLORIZE, 0, 255 0, 30);

renklendirme uygulamak.

GD kütüphanesi desteği alfa saydamlık yüzden bu bir sorun olmamalı gelmez. İşte ben bunu bir araya koymak istiyorum nasıl - Bu çimdik gerekebilir, ama bunun özü olmalıdır.

Kırmızı / yeşil / mavi 0-255 vardır. Alpha (127 tamamen şeffaf olmak) 0-127 olduğunu. Bu kod "output.png" olarak görüntü "original.png" ve çıkış için% 50 kırmızı tonu uygulamak gerekir.

<?php

$red = 255;
$green = 0;
$blue = 0;
$alpha = 63

$src_img = imagecreatefrompng("original.png");
$tint_img = imagecreatetruecolor(imagesx($im_src), imagesy($im_src));
$tintcolor = imagecolorallocate($tint_img, $red, $green, $blue, $alpha);
imagefill($tint_img, 0, 0, $tintcolor);
imagecopymerge($tint_img, $src_img, 0, 0, 0, 0, imagesx($im_src), imagesy($img_src), 100);
imagepng("output.png");

?>