gpt4 book ai didi

java - 无法实例化 ColorModel 类型

转载 作者:行者123 更新时间:2023-11-29 03:12:12 26 4
gpt4 key购买 nike

请不要讨厌这个“一般性问题”,因为它确实是一个问题。我还搜索了其他问题,问题总是人们想要实例化接口(interface)。那不是我的情况。

类 ColorModel 不是接口(interface),它有一个采用 int 的构造函数。为什么会出现“无法实例化 ColorModel 类型”错误?

代码如下:

package test;

import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class BufferedImageGetRGB {

public static void main(String...args) {

BufferedImage img = null;
try {
img = ImageIO.read(new File("C:\\Users\\xxxxx\\Desktop\\testbinary.png"));
} catch (IOException e) {}

for (int y=0; y<img.getHeight(); ++y) {
for (int x=0; x<img.getWidth(); ++x) {
System.out.println(img.getRGB(y, x));
ColorModel cm = new ColorModel(img.getRGB(y, x));
}
}
}
}

最佳答案

您不能直接实例化 ColorModel 类型的对象,因为这种类型是抽象ColorModel API会告诉你,和接口(interface)一样,抽象类型不能直接构造。 API 还会告诉您可能可用的具体子类型。这里的教训是,您的问题与接口(interface)类型问题非常相似,解决方案也相似——遇到此类问题时始终检查 API。

请注意,您可以通过调用 BufferedImagegetColorModel() 方法直接从 BufferedImage 获取图像的 ColorModel。不确定为什么要尝试在 for 循环中重复创建一个新的。

即,

BufferedImage img = null;
try {
img = ImageIO.read(new File("C:\\Users\\xxxxx\\Desktop\\testbinary.png"));
} catch (IOException e) {
e.printStackTrace(); // never leave this block empty **********
// exit program here?
}

ColorModel cm = img.getColorModel();

for (int y=0; y<img.getHeight(); ++y) {
for (int x=0; x<img.getWidth(); ++x) {
System.out.println(img.getRGB(y, x));
// ColorModel cm = new ColorModel(img.getRGB(y, x));
}
}

附带说明一下,catch (IOException e){} 不是一种安全的做法,希望您的真实代码不会这样做。

关于java - 无法实例化 ColorModel 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770235/

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