读取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