Javascript 更改重新缩放黑白图片中像素的颜色

Javascript 更改重新缩放黑白图片中像素的颜色,javascript,php,jquery,canvas,colors,Javascript,Php,Jquery,Canvas,Colors,给定一张黑白图片,这是用户创建的。我想添加一个颜色函数。 由于他创建的图片的大小可能不同,我用PHP固定了高度并绘制了原始图像: //Get img Data $.ajax({ url: "/_app/request.php", type: "POST", dataType:'json', data: ({msg : message}), success: function(data){

给定一张黑白图片,这是用户创建的。我想添加一个颜色函数。 由于他创建的图片的大小可能不同,我用PHP固定了高度并绘制了原始图像:

    //Get img Data
    $.ajax({
        url: "/_app/request.php",
        type: "POST",
        dataType:'json',
        data: ({msg : message}),
        success: function(data){
             $('#qroriginal').attr("src",data)
        }
    }); 
在我使用的create函数中:

$img= imagescale($img , 200, 200);
然后使用颜色选择器作为输入更改颜色:

    //in front and back are the new rgb color values
    var c=$('#prev');
    var ctx = c[0].getContext("2d");
    var img=$('#original');

    ctx.drawImage(img[0],0 ,0);

    var imgData= ctx.getImageData(0,0, c[0].width, c[0].height);
    //change colors
    var i;
    for (i = 0 ; i<imgData.data.length;i+=4){
        if(imgData.data[i] > 200){
            imgData.data[i] = front[0]; 
            imgData.data[i+1] = front[1]; 
            imgData.data[i+2] = front[2]; 
        }
        else if(imgData.data[i] < 50){
            imgData.data[i] = back[0];
            imgData.data[i+1] = back[1]; 
            imgData.data[i+2] = back[2]; 
            imgData.data[i+3] = imgData.data[i+3];
        }
现在的问题是:如果不重新缩放,黑色的rgb值已经在245-255之间。但如果我重新调整它的尺度。我得到一些介于100-150之间的值。所以我不知道它是白色还是黑色像素。
我正在考虑用PHP更改create函数,或者用javascript编写更好的过滤器,查看相邻像素。

100-150之间的值不是完全的黑/白,因此它们不接近255/0。我更愿意采用5%或10%的因子,通过该因子,我将在缩放后添加到像素值中。这将产生非常重要的影响
结果。

你能不能换一种方法,重新开始,然后缩放?缩放通常被认为是一种破坏性的过程,曾经存在的数据会丢失,因此通常会让您在处理图像时做最后一件事。这将是一个选项,它肯定会起作用,但我希望基于客户端进行。否则,每次选择新的颜色选项时,我都必须向服务器发送请求。您可以在服务器上保留原始图像的副本,并对其应用任何颜色更改,然后在发送之前对其进行缩放。抱歉,请澄清。因此,在重新缩放后,我应该检查图像的像素,并在返回之前对其进行操作?。但是,当一个像素的颜色不是完全的黑/白时,不是也有同样的问题吗?当你缩放图像时,像素的颜色看起来更亮一个小图像有清晰的边界,但缩放后的图像边界周围有浅黑色/灰色像素。如果您设置一个5%的因子,使颜色朝着更暗的方向增加……它将显示得更清晰,就像它以较小的尺寸显示一样。