我用node-webkit编写了一个小工具。我选择node-webkit的一个原因是,您可以轻松地将应用程序分发到所有主要平台。
我现在喜欢做的事情是调整位于文件存储上的一堆图像。
我发现很多软件包通过ImageMagick来完成。这将要求用户安装ImageMagick,这很糟糕......
使用网络服务是不可取的。很容易就能有大约600张图片。
如果没有解决方案,我只会在安装了imagemagick的情况下运行该任务。
答案 0 :(得分:4)
您可以使用canvas标签调整图片大小。
将图像加载到具有新大小的画布中:
...
var tempCanvas = document.createElement('canvas');
tempCanvas.width = newWidth;
tempCanvas.height = newHeight;
var ctx = tempCanvas.getContext('2d');
var img = new Image();
img.src = imageSrc;
img.onload = function () {
ctx.drawImage(this, 0, 0);
};
从画布获取重新调整大小的图像:
...
var image = canvas.toDataURL('image/png');
image = image.replace('data:image/png;base64,', '');
var buffer = new Buffer(image, 'base64');
fs.writeFile('filename.png', buffer, function (error) {
if (error) {
// TODO handle error
}
});
...
在此示例中,生成的图像将是png。您可以使用node-webkit支持的结果类型。如果您有不同的图像类型作为输入并希望以相同的类型输出,则需要添加一些将正确的mime类型设置为canvas.toDataURL
的代码。
答案 1 :(得分:0)
我正在开发一个没有任何运行时依赖性的图像处理模块;这意味着您的用户不需要安装imagemagick。它还处于早期阶段,但已经可以使用了。
该模块的一部分是用C ++编写的,因此您必须确保在您打包应用程序的每个平台上npm install
模块(比告诉用户预先安装imagemagick,imho更好) )。 node-webkit应用程序无论如何都是按平台分发的,所以它不应该是一个问题。但请注意,我还没有使用node-webkit测试它,
使用此模块,调整图像大小非常简单:
image.batch().resize(200, 200).writeFile('output.jpg',function(err){
// done
});
该模块Github repo的更多信息。