确实限制总像素数不能超过16384 * 16384
不知道为什么要这样限制
static bool read_dib_infoheader(QDataStream &s, BMP_INFOHDR &bi)
{
s >> bi; // read BMP info header
if (s.status() != QDataStream::Ok)
return false;
int nbits = bi.biBitCount;
int comp = bi.biCompression;
if (!(nbits == 1 || nbits == 4 || nbits == 8 || nbits == 16 || nbits == 24 || nbits == 32) ||
bi.biPlanes != 1 || comp > BMP_BITFIELDS)
return false; // weird BMP image
if (!(comp == BMP_RGB || (nbits == 4 && comp == BMP_RLE4) ||
(nbits == 8 && comp == BMP_RLE8) || ((nbits == 16 || nbits == 32) && comp == BMP_BITFIELDS)))
return false; // weird compression type
if (bi.biWidth <= 0 || !bi.biHeight || quint64(bi.biWidth) * qAbs(bi.biHeight) > 16384 * 16384)
return false;
return true;
}
【 在 dormouseBHU 的大作中提到: 】
: 你这个确实打不开。是因为图像像素数超出 16384 * 16384 了,这个应该是 bmp 图像加载算法有限制。
: 下次你直接说像素数,你说30多兆的图像,我们都认为也就是几百万像素的图像。。。
: 解决办法可以存成 png 图片。
: ...................
--
FROM 60.168.247.*