使用Magick ++

时间:2015-11-30 14:22:50

标签: c++ imagemagick magick++

读取8位bmp并使用resize()调整大小(缩减)使其在内部变为24位。 Scale()保持深度,但当然看起来不太好,所以我更喜欢使用较慢的resize()。

调用resize()后,depth()仍然报告为8位,但不是(总颜色超过400.000)

我尝试将深度设置为8,但是当从24位写入磁盘时,这不会改变输出。 还尝试写入blob指定格式(BMP)和8位。那也输出24位。

问题是如何在使用调整大小时保持相同的位深度?

Magick::Image image;
const int depth2 = image.depth(); // 16
image.read("C:\\earth-huge.bmp"); // 8 bit. 64 colors
const int depth = image.depth(); // 8
int colors2 = image.totalColors(); // 64

image.filterType(Magick::FilterTypes::LanczosFilter);
image.resize(Magick::Geometry(1024, 512));

const int depth3 = image.depth(); // 8
int colors = image.totalColors(); // 409246

image.depth(8); // no effect

int colors3 = image.totalColors(); // 409246

image.write("C:\\earth-huge-magick++.bmp"); // outputs 24 bit bmp

0 个答案:

没有答案