我創建一個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