2012-10-11 19 views
0

可能重复:
Have GD get image from binary stringPHP,GD和灰度在foreach循环

我需要能够改变图像灰度到上飞,foreach循环中。

我基本上是从数据库中取出一组图像URL,然后在显示它们之前,我需要它们变成灰度,简单来说。

它是否可行而不实际创建一个单独的文件作为图像源,它将处理文件和输出图像标题?

+0

是我没有,但大多数的例子只是一个简单的createimagefromjpeg (或其他分机)和imagejpeg(或其他分机)以及图像头的使用,这需要一个单独的文件中的PHP脚本。我想避免像这样的文件添加到服务器。或者换句话说,在我采取进一步措施之前,需要确保这是唯一的方法。 –

+0

@xception我不同意。他不想创建另一个PHP页面。 – blue112

+0

@ blue112再看看这个问题,他说他的问题是他必须创建一个文件作为图像源,这可以避免通过从数据库中创建图像作为字符串传递,除非我误解了一些东西。 – xception

回答

0

如果您希望在显示之前处理图像,并且不要将php脚本作为图像源调用,那么既不将图像保存为新图像,也可以使用base64图像源执行此操作。

喜欢的东西:

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoABBANSUhEUgAAADIA..." /> 

您可以使用BASE64_ENCODE在图像上,以获得base64编码数据。

$out = base64_encode(imagepng($im)); 
echo '<img src="data:image/png;base64,'.$out.'" />'; 

这应该做的伎俩。

+0

试过但我得到的是一群乱七八糟的字符在源中 –

0

如果CSS3是可以接受试试这个:

.grayscale { 
    filter: grayscale(100%); 
    -webkit-filter: grayscale(100%); 
    -moz-filter: grayscale(100%); 
    -o-filter: grayscale(100%); 
    -kthml-filter: grayscale(100%); 
    -ms-filter: grayscale(100%); 
} 

添加class="grayscale"到您的IMG。这样,您仍然可以使用原始图像,但它们会以灰度显示给用户。如果添加

filter: gray; 

到以上所述,在IE6-9

演示使用的iframe类甚至工作:http://jsfiddle.net/8BDVn/

+0

我已经玩过css3了。以上不适用于火狐浏览器的Firefox –

+0

http://demosthenes.info/blog/532/Convert-Images-To-Black-And-White-With-CSS - 这里有一个svg过滤器,你会需要将该svg下载到您的服务器 – xception