我创建一个24位bmp,它一般工作正常(我一直在使用该功能一段时间)。现在我已经尝试写入970 x 970像素的bmp,并且最终以损坏的文件结尾(之前导出了更大的图像,但遇到此特定分辨率的问题)。创建24位BMP失败(只有一个特定的分辨率)
这是我建立的标题:
private static byte[] createHeader(int width, int height) {
int size = width * height * 3 + 54;
byte[] ret = new byte[54];
set(ret, 0, (byte) 'B', (byte) 'M');
set(ret, 2, intToDWord(size));
set(ret, 6, intToDWord(0));
set(ret, 10, intToDWord(54));
set(ret, 14, intToDWord(40));
set(ret, 18, intToDWord(width));
set(ret, 22, intToDWord(height));
set(ret, 26, intToWord(1));
set(ret, 28, intToWord(24));
set(ret, 30, intToDWord(0));
set(ret, 34, intToDWord(width * height * 3));
set(ret, 38, intToDWord(0));
set(ret, 42, intToDWord(0));
set(ret, 46, intToDWord(0));
set(ret, 50, intToDWord(0));
return ret;
}
这里得到的图像(本测试图像应该是完全为红色): test_corrupt.bmp (2.6mb)
我已经分析了头,检查大小,我无法找到此图像不是有效的BMP的原因。
有没有人有线索?我没有取得任何进展。
如何定义'set','intToDWord'和'intToWord'方法? – 2014-09-19 15:17:01