如何在 PHP 中為透明的 PNG 文件著色? (How can I tint transparent PNG files in PHP?)


問題描述

如何在 PHP 中為透明的 PNG 文件著色? (How can I tint transparent PNG files in PHP?)

I have a transparent PNG image. The transparent areas need to remain completely transparent, but the other areas need tinting with a particular hue.

What's the best way to do this using GD?

Cheers, James

‑‑‑‑‑

參考解法

方法 1:

The above solution didn't work for me.

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.)

I managed to use imagefilter and colorize as follows:

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

to apply tinting.

方法 2:

The GD library does support alpha transparency so this should not be a problem.  Here's how I'd put it together ‑ you may need to tweak this, but the gist of it should be there.

Red/green/blue are 0‑255. Alpha is 0‑127 (127 being fully transparent).  This code should apply a 50% red tint to the image "original.png" and output as "output.png".

<?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");

?>

(by James Hallnunespascalpix0r)

參考文件

  1. How can I tint transparent PNG files in PHP? (CC BY‑SA 3.0/4.0)

#png #png-24 #transparency #PHP #gd






相關問題

Iphone app PNG 序列動畫 - 如何在不崩潰的情況下以最佳方式使用 OPENgle (Iphone app PNG sequence animation - How to use OPENgle optimally without crashing)

相當於PNG的視頻? (Video equivalent of PNG?)

是否有將大型 PDF 圖像存儲為文件(BMP/PNG/等)的工具或技巧? (Is there a tool or trick to store a large PDF image as a file (BMP/PNG/etc)?)

Apakah libpng memungkinkan untuk membaca tidak seluruh gambar ke memori? (Does libpng allow to read not the whole image to the memory)

如何對png文件進行去隔行掃描? (How to de-interlace png files?)

javascript PNG操作 (javascript PNG manipulation)

渲染的 PNG 的 AJAX 加載不起作用 (AJAX load of a rendered PNG not working)

性能緩慢的 WPF 動畫。使用形狀比使用 .png 更好? (Slow performance WPF animations. Better to use shapes than .png?)

Xcode 4 歸檔導致管理器緩慢/無響應,並且 pngcrush 進程佔用 100% cpu (Xcode 4 archive results in slow/unresponsive Organizer & pngcrush process takes up 100% cpu)

如果我有一個包含大量圖像的 iPad 應用程序,那麼 PNG 仍然是最佳選擇嗎? (If I have an iPad app with lots of images, is PNG still the best option?)

MKMapView 遮擋是否剔除它的註釋? (Does MKMapView occlusion cull it's annotations?)

如何在 PHP 中為透明的 PNG 文件著色? (How can I tint transparent PNG files in PHP?)







留言討論