SDL画素データを経由して魔術++アニメーション生成
-
21-09-2019 - |
質問
私は<のhref = "HTTPから ImageMagickのの画像を生成しようとしている:/を/en.wikipedia.org/wiki/Simple_DirectMedia_Layer」のrel = "nofollowをnoreferrer"> SDL のピクセルデータ。ここではGIFのルックスは、これまでの好きなものです。 (このGIFが目的で以下のものより遅い。)
http://www.starlon.net/images/combo.gifする
ここでそれが見えるようになっているものです。画素が他の画素の上にオーバーレイされるように見えることは、上記画像で通知。
http://www.starlon.net/images/combo2.gifする
GIFが実際に作成されたところです。
void DrvSDL::WriteGif() {
std::list<Magick::Image> gif;
for(std::list<Magick::Blob>::iterator it = image_.begin(); it != image_.end(); it++) {
Magick::Geometry geo(cols_ * pixels.x, rows_ * pixels.y);
Magick::Image image(*it, geo, 32, "RGB");
gif.push_back(image);
LCDError("image");
}
for_each(gif.begin(), gif.end(), Magick::animationDelayImage(ani_speed_));
Magick::writeImages(gif.begin(), gif.end(), gif_file_);
}
ブロブがパックされた。ここで、そして、ここからです。
image_.push_back(Magick::Blob(surface_->pixels, rows_ * pixels.y * surface_->pitch));
ここでそして、私はSDLの表面を初期化する方法です。
surface_ = SDL_SetVideoMode(cols_ * pixels.x, rows_ * pixels.y, 32, SDL_SWSURFACE);
解決
は先頭画像は、通常、ずれバッファによって引き起こされます。 SDLバッファは、おそらくDWORD整列し、 ImageMagickののルーチンバッファは、A上に整列されることを期待されていませんDWORD。これは、ビットマップ処理では非常に一般的です。人気の画像処理ライブラリ - LEADTOOLSは、一般的に、DWORD整列されたデータが必要です。これは主に単色と32ビットカラーの場合であるが、任意の色深度の場合であってもよい。
あなたがする必要がどのようなDWORDアウトの書き込みは、あなたのSDLバッファまたはのからビットマップを揃え、少なくともDWORDが揃っているバッファを作成されます。
ImageMagickのAPIドキュメントは、これをさらに明確化を助けることができるかもしれません。
他のヒント
あなたがしようとする場合がありますもう一つは、必ず、すでにそこに任意のデータが存在しないようにするためにバッファをクリアすることです。私は本当にIMのAPIを知らないが、他の画素の上にオーバーレイピクセルは、通常、汚れたバッファを示します。