Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript 尝试使用quatitize.js,但收到错误消息;未捕获类型错误:对象#<;错误>;没有方法';调色板'&引用;_Javascript - Fatal编程技术网

Javascript 尝试使用quatitize.js,但收到错误消息;未捕获类型错误:对象#<;错误>;没有方法';调色板'&引用;

Javascript 尝试使用quatitize.js,但收到错误消息;未捕获类型错误:对象#<;错误>;没有方法';调色板'&引用;,javascript,Javascript,我正在学习使用电脑 但是获取错误“uncaughttypeerror:Object”没有方法“palete”。我不知道怎么了。请帮忙。谢谢 代码如下: /*! *quantize.js版权所有2008 Nick Rabinowitz。 *根据麻省理工学院许可证获得许可:http://www.opensource.org/licenses/mit-license.php */ //填写几个protovis依赖项 /*! *下面的块是从Protovis复制的:http://mbostock.g

我正在学习使用电脑 但是获取错误“uncaughttypeerror:Object”没有方法“palete”。我不知道怎么了。请帮忙。谢谢

代码如下:


/*!
*quantize.js版权所有2008 Nick Rabinowitz。
*根据麻省理工学院许可证获得许可:http://www.opensource.org/licenses/mit-license.php
*/
//填写几个protovis依赖项
/*!
*下面的块是从Protovis复制的:http://mbostock.github.com/protovis/
*版权所有2010斯坦福可视化集团
*根据BSD许可证获得许可:http://www.opensource.org/licenses/bsd-license.php
*/
如果(!pv){
var pv={
映射:函数(数组,f){
var o={};
返回f?array.map(函数(d,i){
o、 指数=i;
返回f.call(o,d);
}):array.slice();
},
自然领主:功能(a,b){
回报率(ab)-1:0);
},
求和:函数(数组,f){
var o={};
返回数组.reduce(f?函数(p,d,i){
o、 指数=i;
返回p+f调用(o,d);
}:功能(p,d){
返回p+d;
}, 0);
},
最大值:函数(数组,f){
返回Math.max.apply(null,f?pv.map(数组,f):数组);
}
};
}
/**
*MMCQ(修改的中值剪切量化)的基本Javascript端口
*Leptonica库中的算法(http://www.leptonica.com/).
*返回一个颜色贴图,您可以使用它将原始像素映射到缩小后的像素
*调色板。仍在进行中的工作。
*
*@作者Nick Rabinowitz
*@example
*/
//作为[R,G,B]阵列的像素阵列
var myPixels=[
[190, 197, 190],
[202, 204, 200],
[207, 214, 210],
[211, 214, 211],
[205, 207, 207]
//等
];
var-maxColors=4;
var cmap=MMCQ.quantize(myPixels,maxColors);
var newpalete=cmap.palete();
var newPixels=myPixels.map(函数(p){
返回cmap.map(p);
});
// */
变量MMCQ=(函数(){
//私有常数
var sigbits=5,
rshift=8-符号位,
最大迭代次数=1000,
分形人口=0.75;
//获取像素的缩小空间颜色索引
函数getColorIndex(r、g、b){
返回(r最大迭代次数){
//log(“无限循环;可能像素太少!”);
返回;
}
}
}
//第一组颜色,按总体排序
国际热核实验堆(pq,分形人口*maxcolors);
//按像素占用率乘以颜色空间大小的乘积重新排序。
var pq2=新PQUE(功能(a,b){
返回pv.naturalOrder(a.count()*a.volume(),b.count()*b.volume())
});
while(pq.size()){
pq2.push(pq.pop());
}
//下一组-使用(npix*vol)排序生成中值切割。
iter(pq2,maxcolors-pq2.size());
//计算实际颜色
var cmap=新的cmap();
而(pq2.size()){
cmap.push(pq2.pop());
}
返回cmap;
}
返回{
量化:量化
}
})();


代码来自quantize.js。非常感谢。

如果打开指向脚本当前版本的链接,您将看到代码的这一部分被注释掉了。第38行和第39行还规定:

 * Returns a color map you can use to map original pixels to the reduced
 * palette. Still a work in progress.
因此,我不希望它工作,也许有一些缺少的库。我建议您在更新代码时使用最新版本

此外,您还可以保持页面清洁并分离模块。例如,创建一个子目录资产,将quantize.js放入其中,并在页面中包括:

  <script src="/assets/quantize.js" type="text/javascript"></script>

问题似乎发生在函数“quantize”上。您似乎没有正确地将像素传递给它,或者将MaxColor设置得过高或过低。 尝试在其中添加一些console.log,看看像素是0还是最大颜色不好。 :

函数量化(像素、最大颜色){
//短路
如果(!pixels.length | | maxcolors<2 | | maxcolors>256){
console.log('maxcolors的数目错误');
log(“像素长度:+pixels.length”);
log(“maxcolors:+maxcolors”);
返回false;
}
console.log(像素.长度);
  <script src="/assets/quantize.js" type="text/javascript"></script>
function quantize(pixels, maxcolors) {
        // short-circuit
        if (!pixels.length || maxcolors < 2 || maxcolors > 256) {
            console.log('wrong number of maxcolors');
            console.log("pixellength: " + pixels.length);
            console.log("maxcolors:" + maxcolors);
            return false;

        }

        console.log(pixels.length);