我正在尝试从SDL像素数据生成ImageMagick图像。这是到目前为止 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_);
}
这就是 Blob 被打包的地方。
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);