Mor*_*sen 6 imagemagick azure node.js graphicsmagick azure-functions
我正在尝试查看我的公司是否可以使用Azure Functions自动将TIFF文件转换为许多JPG和PNG格式和大小。我正在使用带有Node.js的功能,但是可以使用其他语言。
我的问题是,我无法让GraphicsMagick或ImageMagick来使用Functions。我使用npm install使用正常的安装步骤。
似乎安装正确,并且该模块也似乎已加载,但是当我尝试处理文件时没有任何反应。没有,也没有错误。
var fs = require('fs'); var gm = require('gm');
module.exports = function(context,req){context.log('Start ...');
Run Code Online (Sandbox Code Playgroud)try { context.log('Looking for GM...'); context.log(require.resolve("gm")); } catch(e) { console.log("GM is not found"); process.exit(e.code); } gm('D:/home/site/wwwroot/HttpTriggerJS1/input/870003-02070-main-nfh.jpg') .resize(240, 240) .noProfile() .write('D:/home/site/wwwroot/HttpTriggerJS1/output/resize.jpg', function (err) { context.log('TEST'); if (!err) { context.log('done'); } } ); context.done(null, res); };
我不确定这是否有可能,但是我还没有找到任何信息表明无法做到这一点。
那么,我可以在Function中使用ImageMagick,GraphicsMagick或第三个图像转换器吗?如果是,安装时我需要注意一些特别的事情吗?
还有C#解决方案吗?
Azure 中的 Web 应用程序是一种 SaaS(软件即服务)。您将您的位部署到 Azure IIS 容器,剩下的工作由 Azure 完成。我们没有太多控制权。因此,我们将无权在 Azure Functions 应用程序(例如 ImageMagick 或 GraphicsMagick)上安装任何 3rd 方可执行文件。如果您需要这样做,请查看虚拟机。另一种选择是使用云服务的 Web 或工作角色。
或者,有一个很好的 Node 图像处理库,完全用 JavaScript 编写,零外部或本机依赖项,Jimp。https://github.com/oliver-moran/jimp
用法示例:
var Jimp = require("jimp");
Jimp.read("lenna.png").then(function (lenna) {
lenna.resize(256, 256) // resize
.quality(60) // set JPEG quality
.greyscale() // set greyscale
.write("lena-small-bw.jpg"); // save
}).catch(function (err) {
console.error(err);
});
Run Code Online (Sandbox Code Playgroud)
还有另一个名为sharp的node.js库可以满足您的要求。你可以试试这个方法:
首先,在本地环境中安装sharp,然后使用以下命令将应用程序部署到Azure node_modules包含已编译模块文件夹。最后,将 Azure 应用服务上的节点可执行文件升级到 64 位。
您可以在此处参考类似的线程。
用法示例:
var sharp = require("sharp");
sharp(inputBuffer)
.resize(320, 240)
.toFile('output.webp', (err, info) => {
//...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |