给定图像的宽度、高度、深度和字节数组,我需要创建一个SWT图像对象。目前,当给出8位图像的数据时,我没有任何问题。
int imageWidth;
int imageHeight;
int depth;
byte[] imageBytes;
//calculate the values
imageData = new ImageData( imageWidth, imageHeight, depth, new PaletteData(255,255,255), 1, imageBytes);
new Image( display, imageData );
我遇到的问题是对于16位图像,颜色有些偏差。本应为黑色的像素实际上是灰色的。
对于32位图像,只有少数黑色像素出现,其余部分为白色。
您有什么想法吗?
谢谢。
编辑:imageBytes数组是从我无法获取规范的专有图形文件中读取的(因此我不完全确定格式)。
我在32位图像上取得了一些进展。看起来32位图像是RGBAX格式之一。我将其转换为24位图像,现在它与16位图像具有相同的问题(灰色应该是黑色)。
imageBytes数组的大小为(宽度*高度*(深度/8)),其中深度以位为单位。
我尝试更改每个像素的字节顺序,但它并没有解决问题。在应该是纯黑色的区域,它可能是黑色的、白色和黑色的混合或全部是白色。
imageBytes
。这意味着问题可能发生在你发布的代码执行之前。如果你分享图片、用于读取它的完整代码以及你得到的结果截图,你可能能够获得帮助理解图像格式。如果没有这些信息,我或其他人就无法做更多事情了。 - mpenkov