2010-04-26 43 views
1

是否可以将图像的左侧,右侧和底部混合为一种颜色?
可以说,我想要图像混合到颜色“#F0F0F0”。我希望图像作为背景的实际部分出现,所以我认为它看起来很酷,如果它被混合。可能将图像混合为一种颜色? (左,右,底)

+0

我不明白你的意思。你能举一个例子截图吗? – 2010-04-26 20:14:26

+0

有什么特别的原因,你不能只用Photoshop/GIMP做这个? – dclowd9901 2010-04-26 20:16:35

+0

我会在一秒内截图。 @ dclowd9901,我希望图像是动态的。所以当url被改变时,一个不同的图像被显示,但是具有相同的颜色混合。对不起,如果我没有任何意义。 – 2010-04-26 20:18:36

回答

1

编码它你可以这样做库如ImageMagickGD。我发现this page作者使用渐变来使用GD执行混合。

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

根据您的截图UPDATE

,我不明白为什么你不能做你想只用直HTML + CSS的东西。您可以使用使用透明的PNG 或者您可以在您的CSS(Cross-browser Transparency via CSS中使用-moz-opacity,opacityfilter:alpha

+1

透明的'png'是唯一的方法。如果他给它一个“背景色”,然后使其部分不透明,那么它也会使内容不透明。对于OP:确保你给我们尽可能多的信息,你可以开始。可能有办法去皮那个你甚至没有想到过的猫。 – dclowd9901 2010-04-26 20:45:55

+0

没错 - 我一直在忘记! – 2010-04-26 20:46:35

+0

@ dclowd9901,Yeh对于缺乏信息感到抱歉。我会确保我的下一个问题得到进一步解释。 +1 – 2010-04-26 21:02:33

1

你将不得不操纵图像的像素数据来实现这一点,但一旦你有了它不是一个真正的问题。取像素的颜色值并将其与blendcolor混合。有一些非常标准的数学方法可以很好地完成这项工作,例如在执行多重纹理时经常在pixelshaders中使用此算法value1 + (value2 - value1) * amount

为PHP正如其他人所说的图像资料库,如GD有助于完成图像的数据操作,你将不必通过使用图像处理解码和自己

2

如果这仅仅是一个网页,这是可能的使用基本的HTML + CSS。就像你说的,你可以在你的背景上使用PNG作为平台(通过精心定位的<div>)。

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

1

我不知道你需要什么,但是使用半透明PNG作为覆盖层,你可以做很多,而无需操纵你的原始图像。

0

我建议你使用verot's upload 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'; 
+0

没有任何东西可以包含所有可用的服务器端操作,因为您可以用任何可能的方式自己解码和操作图像数据,但不合逻辑,无理性或不寻常:)您基本上可以重写一个photoshop滤镜对于PHP(减本机api函数调用photoshops API,但你也可以重写这些算法) – 2010-04-26 21:08:17

+0

好的谢谢你的更正。不过,这门课提供了很多内置的图像处理设施。 – pixeline 2010-04-27 09:41:52