画像を書き込むImageEncoder
を書いていTGA
ます。ファイルを正常に書き込むことができましたがTGA
、終了する代わりに、関連するコードを以下に示します。[RRRRRGGGGGBBBBBA]
[RGBBBBBA]
int lastRow = minY + height;
for (int row = minY; row < lastRow; row += 8) {
int rows = Math.min(8, lastRow - row);
int size = rows * width * numBands;
// Grab the pixels
Raster src = im.getData(new Rectangle(minX, row, width, rows));
src.getPixels(minX, row, width, rows, pixels);
for (int i = 0; i < size; i++) {
//output.write(pixels[i] & 0xFF);
//corrected
//before conversion (source image) pixel in RGBA8888 format.
int o = (int) pixels[i];
//Need to convert here...
short converted = ?;
//need to write out RGB5551
output.write(converted);
}
}
私が達成しようとしていることを明確にするために... 色深度が RGBA8888 の png 形式のソース画像があります。この画像を色深度 RGBA5551 の tga 形式に変換する必要があります。上記の for ループは、個々のピクセルにアクセスする場所です。だから私が求めているのは、32 ビットの int (RGBA8888) を正しく読み取り、それを 16 ビットの short (RGBA5551) に変換するにはどうすればよいですか?