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

时间:2015-01-16 09:00:32

标签: javascript php jquery canvas colors

给出用户创建的黑白图片。我想添加一个颜色功能 由于他创建的图片大小可能会有所不同,我用PHP修改了高度并绘制了原始图片:

    //Get img Data
    $.ajax({
        url: "/_app/request.php",
        type: "POST",
        dataType:'json',
        data: ({msg : message}),
        success: function(data){
             $('#qroriginal').attr("src",data)
        }
    }); 

在我使用的创建函数中:

$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中编写更好的过滤器,查看邻居像素。

1 个答案:

答案 0 :(得分:0)

100-150之间的值不是完整的黑/白,因此它们不接近255/0。我倾向于采用一个因子(5%或10%),我将在缩放后添加到像素值中。这将产生很多相关性 结果