0

我已经了解img_filter_colorize()了一点 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);
imagepng($im, 'flower1.png');
?>

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

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

这是可以实现的吗?还有其他方法吗(javascript、canvas 或任何其他方法)?

4

3 回答 3

0

imagepng如果您不使用filename以下参数,将直接输出 png 文件内容:

imagepng($im);

然后,您可以请求图像

<img src="http://your-shost/yourimagescript.php" />
于 2013-04-07T10:39:36.133 回答
0

如果您省略imagepng()调用的第二个文件名参数,它只会输出图像的字节并且不会保存到文件中,因此您可以在 an 中使用此脚本的 url <img src="">,它应该可以很好地呈现。

但是,这对您的服务器资源来说真的很浪费,因为每次下载图像时都必须再次运行计算,如果您有一个修复调色板,最好预先生成图像或至少缓存生成的版本。

对于面向用户的部分,您可能希望在用户单击“红色”按钮时使用 javascript 来更改浏览器内的 DOM。类似这样的东西:

<img src="the_default_color.png" id="image">
<button id="make_it_red">Make it red</button>
<script>
document.getElementById('make_it_red').onclick = function(){
    document.getElementById('image').src = 'path_to_your_image_generator_php_script.php';
};
</script>

您可能希望使用 rgb 值参数化 php 脚本,这样您就可以将它用于每种颜色。

于 2013-04-07T10:41:38.477 回答
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);
?>
于 2013-04-07T10:42:34.157 回答