【问题标题】:How to convert BufferedImage which has a ComponentColorModel to SWT ImageData?如何将具有 ComponentColorModel 的 BufferedImage 转换为 SWT ImageData?
【发布时间】:2012-01-12 13:00:15
【问题描述】:

This SWT snippetBufferedImage 转换为 SWT ImageData

static ImageData convertToSWT(BufferedImage bufferedImage) {
    if (bufferedImage.getColorModel() instanceof DirectColorModel) {
        ...
    } else if (bufferedImage.getColorModel() instanceof IndexColorModel) {
        ...
    }
    return null;
}

问题是,ColorModel 的第三个子类:ComponentColorModel。我需要使用此颜色模型转换图像。我该怎么做?

【问题讨论】:

    标签: java swt awt bufferedimage


    【解决方案1】:

    找到 here(但请注意 crosay 答案中的补丁!)

    if (bufferedImage.getColorModel() instanceof ComponentColorModel) {
        ComponentColorModel colorModel = (ComponentColorModel)bufferedImage.getColorModel();
    
        //ASSUMES: 3 BYTE BGR IMAGE TYPE
    
        PaletteData palette = new PaletteData(0x0000FF, 0x00FF00,0xFF0000);
        ImageData data = new ImageData(bufferedImage.getWidth(), bufferedImage.getHeight(), colorModel.getPixelSize(), palette);
    
        //This is valid because we are using a 3-byte Data model with no transparent pixels
        data.transparentPixel = -1;
    
        WritableRaster raster = bufferedImage.getRaster();
        int[] pixelArray = new int[3];
        for (int y = 0; y < data.height; y++) {
            for (int x = 0; x < data.width; x++) {
                raster.getPixel(x, y, pixelArray);
                int pixel = palette.getPixel(new RGB(pixelArray[0], pixelArray[1], pixelArray[2]));
                data.setPixel(x, y, pixel);
            }
        }
        return data;
    

    【讨论】:

      【解决方案2】:

      在 Romanov 的回答中,更改以下行:

      int[] pixelArray = new int[3];
      

      int[] pixelArray = colorModel.getComponentSize();
      

      【讨论】:

      • 这也可能需要修复data.transparentPixel
      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2013-09-26
      相关资源
      最近更新 更多