我一直在寻找一种将JPEG编码文件转换为抽象格式的易于操作的npm模块。例如这种格式允许用户在给定位置轻松编辑RGBA值,并将其写回缓冲区,类似于Python/Java中的图像处理库。用于节点JS的JPEG图像操纵器(来自JPEG文件转储)
搜索已经从RGB值 - > JPEG(https://github.com/pkrumins/node-image)中产生了这样的模块,但不是从JPEG-> RGB模型。这样的模块是否存在?
我一直在寻找一种将JPEG编码文件转换为抽象格式的易于操作的npm模块。例如这种格式允许用户在给定位置轻松编辑RGBA值,并将其写回缓冲区,类似于Python/Java中的图像处理库。用于节点JS的JPEG图像操纵器(来自JPEG文件转储)
搜索已经从RGB值 - > JPEG(https://github.com/pkrumins/node-image)中产生了这样的模块,但不是从JPEG-> RGB模型。这样的模块是否存在?
基于list的图形模块,没有太多的东西可以用来直接挑战您的挑战。 Google也很安静。
但是。
有一种方法,我会建议:使用node-canvas为了加载图像并将其绘制到画布中。然后,您可以使用getImageData
访问像素,并随意使用它们。
顺便说一句,JPEG没有甲信道,仅RGB,而帆布确实有4个通道(RGBA )。
您可以使用GraphicsMagick工具转换为RGBA与http://aheckmann.github.io/gm/
产生的“格式”是操控方便普通RGBA流。
使用相同的模块将结果导出为您喜欢的任何格式。
谢谢。最后,我放弃了。
对我而言,工作原理是为现有的终端实用程序编写一个包装,并从服务器脚本调用它。效果很好! (:
// First load Image
var jpegData = fs.readFileSync('grumpycat.jpg');
// Decode Image
var rawImageData = jpeg.decode(jpegData);
// rawImageData =>
// {
// data: [<red>, <green>, <blue>, <alpha>, <red>, <green>, <blue>, <alpha> ...]
// width: 400
// height: 300
// }
// Encode Image
jpegData = jpeg.encode(rawImageData, 50);
function getImageData(url, callback){
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var img = new Image();
img.onload = function(){
context.drawImage(this, this.width, this.height);
callback(context.getImageData(0, 0, this.width, this.height))
}
img.crossOrigin = 'Anonymous';
img.src = url;
}
getImageData('<url-to-img>',function(imgData){
console.log(imgData);
});