改变图像颜色

时间:2013-04-07 10:23:05

标签: php html css3 html5-canvas gd

我已经学会了img_filter_colorize()一点点的php。我想给用户一个选择图像颜色的选项。示例是here

我的代码是:

<?php
header('Content-type: image/png');
$im = imagecreatefrompng('flower.png');
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, 255);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_COLORIZE, 255, 0, 0);
imagepng($im, 'flower1.png');
?>

此代码正在创建一个红色的新图像,但在这里我不想创建图像,只显示在屏幕上。

例如,如果用户选择红色按钮图像更改为红色等等。

这可以实现吗? 有没有其他方法(javascript,canvas或任何其他)?

3 个答案:

答案 0 :(得分:0)

如果您不使用imagepng参数,

filename将直接输出png文件内容:

imagepng($im);

而且,您可以像

那样请求图像
<img src="http://your-shost/yourimagescript.php" />

答案 1 :(得分:0)

如果省略imagepng()调用的第二个文件名参数,它将只输出图像的字节,并且不会保存到文件中,因此您可以在{{内部使用此脚本的URL 1}}它应该被渲染得很好。

然而这会非常浪费您的服务器资源,因为每次下载图像时,计算都必须再次运行,如果您有修复调色板,则可能最好预先生成图像或至少缓存生成的版本。

对于面向用户的部分,您可能希望在用户单击“红色”按钮时使用javascript更改浏览器中的DOM。有点像这样:

<img src="">

您可能希望使用rgb值对php脚本进行参数化,以便将其用于每种颜色。

答案 2 :(得分:0)

仅创建照片视图(不创建新的flower1.jpg)

<?php
echo '<img src="photo.php" height="42" width="42">';
?>

并在一个新文件中:photo.php

<?php
header('Content-type: image/png');
$im = imagecreatefrompng('flower.png');
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, 255);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_COLORIZE, 255,0, 0);
imagejpeg($im);
imagedestroy($im);
?>