Rubyを使用して複数のソースイメージからアニメーションGIFファイルを生成しています。スループットを最大限にする/各GIFを作成するのに費やす時間を最小限にする必要があります。私は、必要なたびにディスクから読み込むのではなく、ソース画像をメモリ(おそらくMemcached)に保存したいと思っています。私はconvert
をバッククォートで使用して、imagemagickコマンドをRubyから直接実行しています。rmagickまたはimagemagickでディスクのアクティビティを最小限にする
`convert -delay #{delay} -page #{w}x#{h}+0+0 src01.gif... etc`
私は少し、私はより多くの例を見つけたとして、私は直接ImageMagickのドキュメントを参照することができRMagickの上にこれを好みます。 convert
コマンドに渡された画像は、ディスク上の画像へのパスである必要があります。さらに、変換されたイメージの出力がファイルパスであるためImageMagickによってディスクに書き込まれるため、Rubyを使用してイメージデータにアクセスする必要があります。私はImageMagickに毎回ディスクからソースイメージを読み込ませ、生成されたGIFを毎回ディスクに書き込むように思えます。私は、Rubyで画像データにアクセスする必要がある生成された画像を一時的に保持する必要がないので、これはボトルネックであり、不要であると思います。
私は、RMagickメソッドがファイルパスの代わりにパラメータとしてMagick::Image
を使用できることに気付きました。この場合、ソース画像をメモリに保存することができます。さらに、RMagickは生成されたイメージをデータとしてRubyに返します。これは必要なものです。ディスクに書き込む必要はありません。
私は、ディスクの活動を減らすために
`convert...`
の代わりにRMagickを使用してと思っています。
質問1:これは意味がありますか? RMagickはおそらくImageMagickをラップするので、RMagickは実際にディスクに読み書きしているのでしょうか、それともディスクの動作なしでImageMagickを利用する方法がありますか?
質問2:ImageMagickの変換コマンドに画像データを取り込む方法はありますか?
希望はこれが理にかなっています。ちょうど私の頭をこの周りに包み込み、私が不明な場合は謝罪しています。
あなたは多分一つの選択肢として、小さなRAMディスクにすることを検討できます。 –
もちろん、あなたはまた、Rubyの構文の確認が、PHPで... /ルビー内の画像を生成し、シーケンスからアニメーションGIFを作成しないで蓄積することができ、あなたが持っているまで、あなたは、フレーム毎に 'addImageを()'を行います完全なシーケンス、次に 'setImageDispose()'と 'writeImages(" animated.gif "、true)'を実行します。 –