2016-11-17 25 views
2

私の会社がAzure関数を使用して、TIFFファイルの変換をJPGおよびPNG形式およびサイズの数に自動化できるかどうかを確認しようとしています。 Node.jsで関数を使用していますが、他の言語を使用することもできます。Azure関数でImageMagickまたはGraphicsMagickを使用する

私の問題は、GraphicsMagickやImageMagickを関数で扱うことができないということです。私はnpmインストールを使用して割賦のための通常の手順を使用しました。

これは正常にインストールされているようで、モジュールもロードされているようですが、ファイルを処理しようとすると何も起こりません。エラーもなく、何もありません。

var fs = require( 'fs'); var gm = require( 'gm');

module.exports = function(context、req){ context.log( 'Start ...');

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

私はそれも可能だとわからないんだけど、私はそれができないと述べているすべての情報を見つけていません。

したがって、関数でImageMagick、GraphicsMagick、または第3のイメージコンバーターを使用できますか?はいの場合は、インストール時に注意する必要がある特別なものがありますか?

答えて

1

AzureのWebアプリケーションはSaaS(Software as a Service)です。 Azure IISコンテナにビットを配備し、Azureが残りの作業を行います。私たちはあまり支配しません。 Azure関数Appにサードパーティの実行可能ファイルをインストールする特権はありません(ImageMagickやGraphicsMagickなど)。それを行う必要がある場合は、仮想マシンを参照してください。もう1つの選択肢は、クラウドサービスのWebまたはWorker Roleを使用することです。

また、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); 
}); 

sharpと呼ばれる別のNode.jsライブラリがあなたの条件を達成することがあります。

まず、ローカル環境にシャープをインストールし、コンパイルされたモジュールを含むnode_modulesフォルダを使用してアプリケーションをAzureにデプロイします。最後に、Azure App Service上の実行可能ファイルを64ビットにアップグレードします。

類似のスレッドhereを参照できます。

使用例:

var sharp = require("sharp"); 

sharp(inputBuffer) 
    .resize(320, 240) 
    .toFile('output.webp', (err, info) => { 
     //... 
    }); 
+0

はい、私はまた、あなたがAzureの機能上の実行可能ファイルをインストールしないことをどこかで読ん...しかし、私はとにかくそれを試みたが、それは動作します!私は、GraphicsMagickをフォルダにインストールし、GraphicsMagickの子プロセスを実行して、実際に必要なファイルを変換します。これはバグですか、それとも意図どおりの使用ですか?私もJimpを見ましたが、TIFFを変換することはできません。それは残念なことに、そこにある取引の破損者です。 –

+0

こんにちは@MortenHansen、私は私の返信を更新しました。 –

関連する問題