有问题的项目:https://github.com/matutter/Pixel2是一个个人项目,用于替换某些过时的工作软件。它应该做的是,用户添加一个图像,并生成图像的调色板。调色板应该没有重复的颜色。 (这是唯一的重要的东西)将图像转换为带有JS的线性调色板,丢失颜色
我的问题是:为什么更大或高分辨率或复杂的图像不工作以及? (丢失颜色数据)
使用dropzone.js我让用户在页面上放置一张图片。图片是一个缩略图。接下来我使用jquery从<img src="...">
中找到src。我传递SRC来,这是否
function generate(imgdata) {
var imageObj = new Image();
imageObj.src = imgdata;
convert(imageObj); //the function that traverses the image data pulling out RGB
}
的“转换”功能,只需通过
for(var i=0, n=data.length; i<n; i+=4, pixel++) {
r = data[i];
g = data[i+1];
b = data[i+2];
color = r + g + b; // format is a string of **r, g, b**
}
最后,主algorithme的最后一部分过滤掉重复的颜色相当翻出数据的功能,我只希望每个刚刚1的出现......这里的最后一部分
color = monoFilter(color); // the call
function monoFilter(s) {
var unique = [];
$.each(s, function(i, el){
if($.inArray(el, unique) === -1) unique.push(el);
});
unique.splice(0,1); //remove undefine
unique.unshift("0, 0, 0"); //make sure i have black
unique.push("255, 255, 255"); //and white
return unique;
}
我希望有人能帮助我找出为什么在大文件中的彩色数据的这样的损失。
如果有人确实很有趣,足以看github上,该relivent文件JS/pixel2.js,JS/dropzone.js和../index.html
也许我误解但为什么不能在关联数组的颜色存储在第一遍后想通了这一点? 'allColors [r + g + b] = 1' – WiredPrairie
问题是关于为什么如果图像很大时这个程序不能找到所有的颜色。然而,这不是一个坏主意,几乎可以忽略删除重复的需要。 – MatUtter
它应该完全忽略删除重复项的需要,因为它将根据存储的性质来完成。 – WiredPrairie