PHP GD kütüphanesi kullanarak bir görüntü renk / tonu dönüştürün.

2 Cevap

Ben dinamik görüntülerin rengini değiştirmek için bu hafta kodu yazıyorum. Sürece görüntü kare veya dikdörtgen olarak, aşağıdaki kod mükemmel çalışıyor. Ancak, köşeleri yuvarlatılmış bir görüntü var (spot renk ve köşeleri dışında arka plan beyaz ile dolu.)

Imagecolorset işlevini (ya da herhangi başka bir php yöntemi) kullanılarak yuvarlanmış köşeleri olan bir görüntüyü renklendirmek için basit bir yolu var eğer birisi bana söyleyebilir misiniz?

Ben sadece resmin olmayan beyaz alanlar (Eğer ben görüntüye uygulanacak renk beyaz vermeme ediyorum, merak ediyorsanız) renkli olmak istiyorum.

Belki de bunu yapmak için daha iyi bir yolu (Doğrusu benim gif görüntü daha) saydam bir geçmişe sahip bir PNG resmi kullanmak olacaktır, unutmayın. Eğer iyi bir yaklaşım olduğunu düşünüyorsanız, lütfen bildiriniz.

İşte ben çalışıyorum fonksiyonu bulunuyor ...

function set_theme_color_header($hex)
{
	$info = hexToRGB($hex); //calls a helper function which translates the hex to RGB
	$img = imagecreatefromgif('header-template.gif'); //again, this could be a PNG image, but we always start with this image, then create a color copy
	$color = imagecolorallocate($img, $info["red"], $info["green"], $info["blue"]);
	imagecolorset($img, 0, $info["red"], $info["green"], $info["blue"]);
	imagegif($img, 'header.gif'); //only problem is that the imagecolorset function creates a messy fill at the corners
}

2 Cevap

GD çok iyi gif bulunuyor işlemez. Daha sonra GD'nin imagefilter ($ img IMG_FILTER_COLORIZE, $ bilgi ["red"], $ info ["yeşil"], $ info ["blue"], $ a) işlevini kullanın, sizin köşeleri yuvarlatılmış bir png görüntü oluştururken öneririz. Sonra bir gif olarak kaydetmek.

Alternatif olarak, tam anlamıyla resim çizmek için php imagick kitaplığı kullanın. imagick GD yaklaşık bir milyar kat daha iyidir. Kötü belgelenmiş, ama ... temel şeyler isnnt çok zor. Aşağıdaki tut bağlantıya bakınız.

Tüm fonksiyonları görmek için "imagick" için arama php.net.

imagick tutorial

ben gerçekten neden bunu yapıyorsun değil mi, ama belki bir phpTumb bakmak zorunda (ve demolar here).