【问题标题】:Changing image color更改图像颜色
【发布时间】:2013-03-29 11:37:38
【问题描述】:

我对php的img_filter_colorize()有一点了解。我想给用户一个选择图像颜色的选项。例如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 或其他)?

【问题讨论】:

    标签: php html css html5-canvas gd


    【解决方案1】:

    如果你省略了imagepng() 调用的第二个文件名参数,它只会输出图像的字节并且不会保存到文件中,所以你可以在&lt;img src=""&gt; 中使用这个脚本的url 和它应该可以很好地呈现。

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

    对于面向用户的部分,您可能希望在用户单击“红色”按钮时使用 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 脚本,这样您就可以将它用于每种颜色。

    【讨论】:

      【解决方案2】:

      imagepng不使用filename这样的参数会直接输出png文件内容:

      imagepng($im);
      

      然后,您可以请求图像

      <img src="http://your-shost/yourimagescript.php" />
      

      【讨论】:

        【解决方案3】:

        只创建照片的视图(不创建新的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);
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-26
          • 2018-10-24
          • 2015-05-23
          • 2021-04-24
          • 1970-01-01
          相关资源
          最近更新 更多