1

是否可以将图像的左侧、右侧和底部混合成一种颜色?
可以说,我希望将图像混合到颜色“#F0F0F0”中。我希望图像显示为背景的实际部分,所以我认为如果将其混合起来会看起来很酷。

4

5 回答 5

2

如果这仅适用于网页,则可以使用基本的 HTML+CSS。就像您说的那样,您可以<div>在背景上使用 PNG 作为中途停留(通过仔细定位)。

否则,请查看ImageMagick Libraries for PHP,因为它们可以让您以编程方式创建您所描述的混合图像。( Imagick::colorizeImage)

于 2010-04-26T20:20:44.653 回答
1

我不知道您到底需要什么,但是使用半透明 png 作为覆盖层,您也可以做很多事情,而无需处理原始图像。

于 2010-04-26T20:26:22.293 回答
1

您将不得不操纵图像的像素数据来实现这一点,但是一旦您涵盖了它,这并不是一个真正的问题。获取像素的颜色值并将其与您的混合颜色混合。有一些非常标准的数学可以做得很好,例如value1 + (value2 - value1) * amount在进行多纹理处理时经常在像素着色器中使用的这种算法。

正如其他人所说,用于 php 的图像库(例如 GD)有助于图像的数据操作,因为您不必自己对其进行解码和编码

于 2010-04-26T20:18:21.600 回答
1

您可以使用ImageMagickGD之类的图像处理库来做到这一点。我发现这个页面,作者使用渐变来执行使用 GD 的混合。

您也可以尝试使用Imagick::colorizeimage

更新

根据你的截图,我不明白为什么你不能用直接的 HTML+CSS 做你想做的事。您可以使用透明 PNG 也可以在您的 CSS 中使用(通过 CSS 实现跨浏览器透明度-moz-opacityopacityfilter:alpha

于 2010-04-26T20:20:05.523 回答
0

我建议你使用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';
于 2010-04-26T20:32:13.647 回答