Java 如何将具有ComponentColorModel的BuffereImage转换为SWT ImageData?
将Java 如何将具有ComponentColorModel的BuffereImage转换为SWT ImageData?,java,swt,awt,bufferedimage,Java,Swt,Awt,Bufferedimage,将buffereImage转换为SWTImageData: static ImageData convertToSWT(BufferedImage bufferedImage) { if (bufferedImage.getColorModel() instanceof DirectColorModel) { ... } else if (bufferedImage.getColorModel() instanceof IndexColorModel) {
buffereImage
转换为SWTImageData
:
static ImageData convertToSWT(BufferedImage bufferedImage) {
if (bufferedImage.getColorModel() instanceof DirectColorModel) {
...
} else if (bufferedImage.getColorModel() instanceof IndexColorModel) {
...
}
return null;
}
问题是,ColorModel
还有第三个子类:ComponentColorModel
。我需要用这个颜色模型转换图像。我该怎么做?找到了(但请注意crosay答案中的补丁!)
if(ComponentColorModel的buffereImage.getColorModel()实例){
ComponentColorModel colorModel=(ComponentColorModel)BuffereImage.getColorModel();
//假设:3字节BGR映像类型
PaletteData调色板=新PaletteData(0x0000FF,0x00FF00,0xFF0000);
ImageData data=新的ImageData(BuffereImage.getWidth()、BuffereImage.getHeight()、colorModel.getPixelSize()、调色板);
//这是有效的,因为我们使用的是没有透明像素的3字节数据模型
data.transparentPixel=-1;
WritableRaster raster=BuffereImage.getRaster();
int[]像素数组=新int[3];
对于(int y=0;y
在罗曼诺夫的回答中,更改以下行:
int[] pixelArray = new int[3];
与
这可能还需要对
data.transparentPixel
进行修复。
int[] pixelArray = new int[3];
int[] pixelArray = colorModel.getComponentSize();