1

個別のサーバーに多数の画像を保存しており、個々の要素を動的に表示または非表示にすることができる、ある種のモザイクとして1つのページに表示する必要があります。

これらの画像を取得し、サイズを変更してから、スプライトとしてつなぎ合わせ、divの背景画像として使用する必要があります。最大のハードルは、appendメソッドを理解することであり、このメソッドを使用するためにセットに画像を追加する方法を理解することであるため、この時点では、フェッチとサイズ変更は問題になりません。

ドキュメントによると:

gm("img.png").append(ltr)

したほうがいい:

Append a set of images

複数の画像を「セット」にするにはどうすればよいですか?

4

2 に答える 2

4

images次のようなパス文字列の配列であるとしましょう:

[ "/home/user/first.jpg", "/home/user/a.png", "/home/user/another.gif" ];

次に、これは機能するはずです:

var gm = require('gm');

var gmstate = gm(images[0]);
for (var i = 1; i < images.length; i++) gmstate.append(images[i]);

// finally write out the file asynchronously
gmstate.write('/home/user/result.png', function (err) {
  if (!err) console.log('Hooray!');
});

アイデアは次のとおりです。

  1. Graphicsmagick 状態変数から始めるgmstate
  2. ループで同期的に追加します。
  3. write()実際の作業を行いますが、これは非同期で行われます。

これは と同等gm('first').append('second').append('third')....append('last')です。

おそらく、空の状態から開始することも可能です: var gmstate = gm();.

@ファイルにリストがある場合は、LeeNXの回答のファイルリストハックがはるかに簡単であることを認めなければなりませんが、そうでない場合は...?

編集:画像を水平に追加する必要がある場合は、次のように に 2 番目のパラメーターtrueを追加します。append()

gmstate.append(image, true);

出典:ドキュメントappend()

于 2012-10-04T17:03:20.597 に答える
0

私ができる最善のことは、次のとおりでした...

var gm = require('gm')

gm('@images.txt')
  .append()
  .write('crazy.png', function (err) {
    if (!err) console.log('crazytown has arrived');
  })

images.txt は、追加する画像のリストです。

イメージ リスト ファイル以外の一連のイメージを渡す方法をまだ理解できていません。

ウェブサイトからアイデアを得ました - http://www.graphicsmagick.org/GraphicsMagick.html

コマンドライン ユーティリティを実行する場合、アットマーク @ をファイル名の先頭に追加して、そのファイルからイメージ ファイル名のリストを読み取ることができます。これは、イメージ ファイル名が多すぎてコマンド ラインに収まらない場合に便利です。

LeeTを助けることを願っています

于 2012-09-05T09:34:26.823 に答える