2016-11-15 20 views
1

img2(300x300と言う)のサイズを変更し、 img1の左上からxとy(例えば100,200)のimg1。最終結果は1024x768サイズのイメージでなければなりません。 (https://github.com/aheckmann/gm)GMを使用Nodejsでgmを使用して2つ以上の画像をサイズ変更して合成する

は、この試み:(なぜなら全体の動作上の鎖)

gm('./img/img1.png') 
.composite('./img/img2.png') 
.geometry('300x300+100+200') 
.write('resultGM.png', (err) => { 
    if (err) console.log(err); 
}); 

予想通り、それは300×300の画像を生成します。複合関数がバッファを受け入れることを望ん

gm('./img/img1.png') 
.composite(
    gm('./img/img2.png') 
    .geometry('300x300+100+200') 
) 
.write('resultGM.png', (err) => { 
    if (err) console.log(err); 
}); 

が、チャンスは、それだけでファイルパスを受け入れていない、それがエラーを与える: は、その後、私はこれを試してみました。 2〜3時間を過ごしていくつかの記事を読むと、How to do composite with gm node.js?とここにはCombine two gm objects while resizing one of them in graphicsMagick for NodeJS(これは実際には質問には答えられません)、メモリ内でこの操作を行う方法が見つかりませんでしたストリームやバッファに保存することができます。一時ファイルに書き込む間に行うことができます。メモリのサイズ変更や画像のマージを行うソリューションがありますか?

答えて

1

;

最終的に数時間の検索の後、gmを使用してレイヤーの位置を(大きめに、下などに)サイズ変更して並べ替える2つの画像をマージする方法を考え出しました。

のが初見にこのイメージを持ってみましょう:ImageMagickののコンヘルプページを掘り、数分後に

enter image description here

、私はDstOverポジショニングの使い方を見ました。

http://www.imagemagick.org/Usage/compose/#dstover

だから、私は以下のコードを試してみました、それが魅力のように働きました!

imageMagick(background) 
    .composite(image) 
    .in('-compose', 'Dst_Over') 
    .in('-geometry', '253x253+15+15') 
    .write(output, function (err) { 
    if (err) console.error(err); 
     else console.log('Compose OK!'); 
    }); 
+0

btw、イメージを構成するために、ノードキャンバスはgmやimよりもかなり速く、高速です。 –

+0

まだ試していませんが。私は私の現在のプロジェクトで終わった後に見ていきます。それでも、私が見たようにパッケージをインストールする必要があります。キャンバスは、位置決めエンティティの位置合わせに最適です。提案ありがとう。 –

+0

ええ、カイロとパンゴが必要です –

0

最後に私は投稿できます参考のために誰もがそれを必要とするかもしれないために:

代わりGraphicMagicのImageMagickのを使用して
gm() 
.in('-geometry', '+0+0') 
.in('./img/img1.png') 
.in('-geometry', '300x300+100+200') 
.in('./img/img2.png') 
.flatten() 
.write('resultGM.png', function (err) { 
    if (err) console.log(err); 
}); 
+0

この方法は私のためには機能しません。私はImageMagickをインストールしているので、graphicmagicの代わりにimagemagickを使用します。私の答えを見てください。 –

関連する問題