Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将具有ComponentColorModel的BuffereImage转换为SWT ImageData?_Java_Swt_Awt_Bufferedimage - Fatal编程技术网

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
转换为SWT
ImageData

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();