我正在写一个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);
}
}
为了澄清我要完成的工作......我有一个 png 格式的源图像,颜色深度是 RGBA8888。我需要将此图像转换为颜色深度为 RGBA5551 的 tga 格式。上面的 for 循环是我访问单个像素的地方。所以我要问的是:如何正确读取 32 位整数(RGBA8888)并将其转换为 16 位短整数(RGBA5551)?