gpt4 book ai didi

java - 如何将具有 ComponentColorModel 的 BufferedImage 转换为 SWT ImageData?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:25 25 4
gpt4 key购买 nike

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。我需要使用此颜色模型转换图像。我该怎么做?

最佳答案

找到 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;

关于java - 如何将具有 ComponentColorModel 的 BufferedImage 转换为 SWT ImageData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8374276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com