質問

私は<の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を知らないが、他の画素の上にオーバーレイピクセルは、通常、汚れたバッファを示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top