我已经学会了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或任何其他)?
答案 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);
?>