Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制PHP ImageMagick';JavaScript中的paintOpaqueImage函数_Javascript_Image_Imagemagick - Fatal编程技术网

复制PHP ImageMagick';JavaScript中的paintOpaqueImage函数

复制PHP ImageMagick';JavaScript中的paintOpaqueImage函数,javascript,image,imagemagick,Javascript,Image,Imagemagick,ImageMagick有一个功能,允许您扫描图片,替换与指定颜色大致相同的所有颜色,并用指定的其他颜色替换这些颜色 我对使用JavaScript复制此功能感兴趣。也就是说,我想应用一个图像过滤器,它可以改变每一种颜色,例如从红色到黑色。这怎么可能呢 旁注:我测试了一个GitHub项目,该项目使用web workers以某种方式克隆了ImageMagick的功能。遗憾的是,它太慢了(需要5.632秒才能从本地服务器加载带有我想要的过滤器的图像..我正在尝试应用过滤器两次)。不过这很酷-。我写了一个

ImageMagick有一个功能,允许您扫描图片,替换与指定颜色大致相同的所有颜色,并用指定的其他颜色替换这些颜色

我对使用JavaScript复制此功能感兴趣。也就是说,我想应用一个图像过滤器,它可以改变每一种颜色,例如从红色到黑色。这怎么可能呢


旁注:我测试了一个GitHub项目,该项目使用web workers以某种方式克隆了ImageMagick的功能。遗憾的是,它太慢了(需要5.632秒才能从本地服务器加载带有我想要的过滤器的图像..我正在尝试应用过滤器两次)。不过这很酷-。

我写了一个快速而肮脏的WebGL,主要是从和复制的

更改颜色发生在html文件第14行的顶点着色器中

<script id="shader-fs" type="x-shader/x-fragment">
    varying highp vec2 vTextureCoord;

    uniform sampler2D uSampler;

    uniform highp vec4 uOrigColor;
    uniform highp vec4 uDestColor;

    void main(void) {
        highp vec4 orig = texture2D(uSampler, vTextureCoord);
        highp vec4 dest = orig;
        highp float gap = 0.05; // threshold
        if (orig.r > uOrigColor.r - gap && orig.r < uOrigColor.r + gap
            && orig.g > uOrigColor.g - gap && orig.g < uOrigColor.g + gap 
            && orig.b > uOrigColor.b - gap && orig.b < uOrigColor.b + gap) {
            dest = uDestColor;
        }
        gl_FragColor = dest;
    }
</script>

可变高矢量2 vTextureCoord;
均匀取样器;
均匀的高维色;
均匀的高维色;
真空总管(真空){
highp vec4 orig=纹理2d(uSampler,vTextureCoord);
highp vec4 dest=初始值;
highp浮动间隙=0.05;//阈值
if(orig.r>uOrigColor.r-gap&&orig.ruOrigColor.g-gap和&orig.guOrigColor.b-间隙和&orig.b

要测试:

您可以使用读取和写入每个像素的RGB值。我曾经用它们做过一个图像变形演示,但是速度非常令人失望。也许,WebGL可以是一个答案。我发现了一个鼓舞人心的项目,名为虽然它没有涵盖你正在寻找的,确切地说。谢谢。。这应该很有趣这是野兽。。。我该怎么感谢你呢?你的比特币地址是什么?谢谢!我是自我激励的,因为我几周前才学会了openGL。你的支持、接受和赞赏对我来说已经足够了那么,在我从上面复制了脚本之后,如何使用它呢?假设我有一个id为=“thisimage”的图像,我想将#000000更改为#FFFFFF@user2476265更改javascript文件第201行的
rainbowImage.src
。由于跨域问题,我使用了base64数据编码。如果要使用的图像与javascript在同一个域中提供,那么就可以了。要更改颜色,请填写“从和到”输入字段,然后单击“更改”按钮。谢谢。。我理解这一点,但我想知道如何将其作为一个函数,自动将某个类的所有图像(其中包含#000000)更改为#FFFFFF。。。你知道我怎样才能做到这一点吗?