第一个问题,请轻点;-)
我写了一个图像类,它使简单的东西(矩形、文本)变得更容易一些,基本上是一堆 PHP 图像函数的包装器方法。
我现在想做的是允许用户定义一个选择,并且让下面的图像操作只影响所选区域。我想我会通过将图像复制到 imgTwo 并从中删除选定区域来做到这一点,像往常一样对原始图像执行以下图像操作,然后在调用 $img->deselect() 时,将 imgTwo 复制回原始图像, 并销毁副本。
- 这是最好的方法吗?显然,在选定区域内定义取消选定的区域会很棘手,但我现在可以接受 :)
然后,我从副本中删除选区的方法是绘制一个透明颜色的矩形,这很有效 - 但我不知道如何选择那种颜色确保它不会出现在图像的其余部分。此应用程序中的输入图像是真彩色 PNG,因此没有带有颜色索引的调色板(我认为?)。
- 必须有比收集每个单独像素的颜色然后找到 $existing_colours 数组中没有出现的颜色更好的方法..对吗?
最佳答案
PNG 透明度与 GIF 透明度的工作方式不同 - 您不需要将特定颜色定义为透明。
只需使用 imagecolorallocatealpha()
并确保您已设置 imagealphablending()
为 false
:
// "0, 0, 0" can be anything; 127 = completely transparent
$c = imagecolorallocatealpha($img, 0, 0, 0, 127);
// Set this to be false to overwrite the rectangle instead of drawing on top of it
imagealphablending($img, false);
imagefilledrectangle($img, $x, $y, $width - 1, $height - 1, $c);
关于php - 如何选择一种颜色使图像透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1048731/