背景に配置された小さなタイルから動的な画像をレンダリングする非常に迅速な方法を探しています(チェスゲームを動的にレンダリングし、各プレーヤーが移動した後に画像を送信することを想像してください)。したがって、手順は非常に簡単なようです。1.背景を取得します。2。画像オフセットを使用してチェスの駒の透明な画像を上から下に配置します(正しい視点にするため)。3。画像全体をgifとして保存します。
imagemagickを使用してみました:
次のようなものを使用します。
convert -page 176x220 -gravity SouthWest 1.png -page +35+30 -gravity SouthWest 1.png -page +62+50 1.png -page +10+55 1.png -background none -compose DstOver -flatten result.gif
そして、同様の方法でグラフィックスマジック:gm convert ... -page + 35 + -30 -flatten ..
しかし、感銘を受けませんでした。GraphicsMagickはより良い結果を提供しましたが、次のようになりました。
サーバ:
user system total real
all: 0.000000 0.000000 47.650000 ( 70.991829)
small: 0.000000 0.000000 6.600000 ( 8.110900)
medium: 0.000000 0.000000 6.820000 ( 8.494131)
large: 0.000000 0.000000 10.890000 ( 15.818351)
extreme: 0.000000 0.000000 11.160000 ( 19.873541)
biggest: 0.000000 0.000000 11.640000 ( 14.327450)
ローカルPhenomIIx6の場合:
user system total real
all: 0.000000 0.000000 1.980000 ( 0.757320)
small: 0.000000 0.000000 0.330000 ( 0.082142)
medium: 0.000000 0.000000 0.380000 ( 0.127744)
large: 0.000000 0.000000 0.410000 ( 0.147252)
extreme: 0.000000 0.000000 0.440000 ( 0.180338)
biggest: 0.000000 0.000000 0.470000 ( 0.210802)
ファイルの読み込みが問題である可能性があると考えて、Rmagickを試してみました(スクリプト: http: //www.imagemagick.org/RMagick/doc/ilist.html#mosaic):
require "benchmark"
require 'RMagick'
#Demonstrate the mosaic method
a = Magick::ImageList.new
26.times do
a.read("csii/some_asset.miff")
end
b = Magick::ImageList.new
page = Magick::Rectangle.new(0,0,0,0)
a.scene = 0
2.times do |i|
2.times do |j|
b << a.scale(1)
page.x = j * b.columns
page.y = i * b.rows
b.page = page
(a.scene += 1) rescue a.scene = 0
end
end
# Make a 5x5 mosaic
#mosaic = b.flatten_images
#mosaic.write("mosaic.gif")
# mosaic.display
Benchmark.bm(7) do |ben|
ben.report("tiny:") {mosaic = b.mosaic}
end
exit
結果はさらに奇妙です:これは小さな 2*2タイルの画像用です
サーバ:
user system total real
tiny: 16.210000 0.000000 16.210000 ( 16.982007)
フェノム:
user system total real
tiny: 0.000000 0.010000 0.010000 ( 0.001637)
追加情報:
入力ファイル形式:pngとmiffを試しました
出力:gifである必要があります
サーバー:VPS〜2.2Ghzで1つのXEONコア
フェノム:6 * 3.2Ghz
バージョンの違い:
Phenom
Version: ImageMagick 6.5.7-8 2010-12-02 Q16 http://www.imagemagick.org
Server
Version: ImageMagick 6.5.1-0 2010-12-02 Q16 OpenMP http://www.imagemagick.org
質問
- 最大10000分の1の速度低下のアイデアはありますか?
- 他の方法(他のGMまたはIM関数?)または方法(chunky_PNGを今すぐ試してみてください(oily_png ext。))でこのタスクを実行する方法についてのアイデアはありますか?
- DOS時代の古い2dゲームは、60 fpsでさらに多くのピクセルをレンダリングできるので、2Ghz CPUでこれを達成できるはずです(200msで大丈夫だと思います)?