我需要一个图像文件验证此测试“if(input.getColorModel()instanceof IndexColorModel)”

时间:2014-04-22 23:45:42

标签: java jai

为了看到下面代码的影响,我需要一个验证if测试的图像文件;你能给我不同的IndexColorModel图像。

System.out.println(input.getColorModel());
System.out.println("vvvvvv");

if (input.getColorModel() instanceof IndexColorModel) {
    System.out.println("eeeeeeeee");

    // Retrieve the IndexColorModel
    IndexColorModel icm = (IndexColorModel)input.getColorModel();

    // Cache the number of elements in each band of the colormap.
    int mapSize = icm.getMapSize();

    // Allocate an array for the lookup table data.
    System.out.println("eeeeeeeee");
    System.out.println(mapSize);
    byte[][] lutData = new byte[3][mapSize];

    // Load the lookup table data from the IndexColorModel.
    icm.getReds(lutData[0]);
    icm.getGreens(lutData[1]);
    icm.getBlues(lutData[2]);

    // Create the lookup table object.
    LookupTableJAI lut = new LookupTableJAI(lutData);

    // Replace the original image with the 3-band RGB image.
    input = JAI.create("lookup", input, lut);
}

1 个答案:

答案 0 :(得分:0)

IndexColorModel通常是从带有PLTE(调色板)块的GIF或PNG创建的。带调色板的BMP文件也可以使用。

尝试使用ImageIO.read(yourGIF)阅读GIF文件时,应该使用IndexColorModel

另一种选择是创建一个这样的空白图像,如果你可以使用固定的颜色图:

input = new BufferedImage(1, 1, BufferedImage.TYPE_BYTE_INDEXED);

但我认为对于您的用例,使用预定义的查找表创建新的IndexColorModel更简单。您无需从输入图像中获取它。