是否可以将图像的左侧、右侧和底部混合成一种颜色?
可以说,我希望将图像混合到颜色“#F0F0F0”中。我希望图像显示为背景的实际部分,所以我认为如果将其混合起来会看起来很酷。
5 回答
如果这仅适用于网页,则可以使用基本的 HTML+CSS。就像您说的那样,您可以<div>
在背景上使用 PNG 作为中途停留(通过仔细定位)。
否则,请查看ImageMagick Libraries for PHP,因为它们可以让您以编程方式创建您所描述的混合图像。( Imagick::colorizeImage
)
我不知道您到底需要什么,但是使用半透明 png 作为覆盖层,您也可以做很多事情,而无需处理原始图像。
您将不得不操纵图像的像素数据来实现这一点,但是一旦您涵盖了它,这并不是一个真正的问题。获取像素的颜色值并将其与您的混合颜色混合。有一些非常标准的数学可以做得很好,例如value1 + (value2 - value1) * amount
在进行多纹理处理时经常在像素着色器中使用的这种算法。
正如其他人所说,用于 php 的图像库(例如 GD)有助于图像的数据操作,因为您不必自己对其进行解码和编码
您可以使用ImageMagick或GD之类的图像处理库来做到这一点。我发现这个页面,作者使用渐变来执行使用 GD 的混合。
您也可以尝试使用Imagick::colorizeimage
更新
根据你的截图,我不明白为什么你不能用直接的 HTML+CSS 做你想做的事。您可以使用透明 PNG ,也可以在您的 CSS 中使用(通过 CSS 实现跨浏览器透明度)。-moz-opacity
opacity
filter:alpha
我建议你使用verot 的上传php类。它包含所有当前可用的处理图像的服务器端操作函数(旋转、色调、框架颜色、背景颜色等)。
请参阅此示例代码:
$foo->image_resize = true;
$foo->image_ratio_fill = 'R';
$foo->image_y = 150;
$foo->image_x = 100;
$foo->image_background_color = '#FF00FF';
$foo->image_rotate = '90';