-1

我一直在寻找一个 npm 模块,它将 JPEG 编码的文件转换为抽象格式,易于操作。例如,这种格式将允许人们轻松地在给定位置编辑 RGBA 值,并将其写回缓冲区,类似于 Python / Java 中的图像处理库。

搜索已经从 RGB 值 -> JPEG ( https://github.com/pkrumins/node-image ) 中产生了这样的模块,但不是来自 JPEG -> RGB 模型。这样的模块是否存在?

4

4 回答 4

1

选项 1:jpeg-js

// 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);

选项 2:使用html5-canvas

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);
});
于 2014-08-25T14:53:44.827 回答
0

谢谢。最后,我放弃了。

对我有用的是为现有的终端实用程序编写一个包装器,并从服务器脚本中调用它。效果很好!(:

于 2013-07-13T05:14:42.800 回答
0

您可以使用 GraphicsMagick 通过http://aheckmann.github.io/gm/转换为 RGBA

生成的“格式”是一个简单的 RGBA 流,便于操作。

使用相同的模块将结果导出为您喜欢的任何格式。

于 2013-07-10T17:30:59.600 回答
0

根据图形模块列表,没有什么可以用来直接完成挑战。谷歌也很安静。
但。

我建议使用一种方法:使用node-canvas加载图像并将其绘制到画布中。然后,您可以使用 访问像素getImageData,并随心所欲地处理它们。

顺便说一句,JPEG 没有A通道,只有RGB,而画布确实有 4 个通道(RGBA)。

于 2013-07-10T14:28:59.517 回答