php - 如何选择一种颜色使图像透明?

标签 php colors transparency gd

第一个问题,请轻点;-)

我写了一个图像类,它使简单的东西(矩形、文本)变得更容易一些,基本上是一堆 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/

相关文章:

php - 如何在nginx服务器中创建虚拟主机?和 ajax 调用

java - java中的多彩多变的文本

jquery - 更改名为 fancybox 的 jquery 插件的背景透明度

c# - 禁用表单的透明度

c++ - Qt:QImage总是将透明色保存为黑色

php - 用缺货的 WooCommerce 产品的文本替换显示的价格

php - MySQL 单表中的多个表

html - 我应该使用什么?十六进制代码、RGB 代码或代码中的颜色名称?

php - 如何在 Eclipse PDT 中重新格式化多行注释?

像彩虹一样对颜色进行排序的算法