我遇到了BufferedImage对象的Vector问题。我试图将BufferedImage对象添加到Vector中,但Vector始终为空。 ImageIo.read(input1)似乎不起作用,但我不明白为什么。
这是我的代码的一部分:
private void drawPixel(int index,String name) throws IOException {
File input1 = new File("pince.png");
BufferedImage img = ImageIO.read(input1);
Graphics g = this.imagePoints.getGraphics();
imagePixelLabelBuffered.add(img);
input1.delete();
changeColorPixelLabel(imagePixelLabelBuffered.get(labelClassesCount-1),labelClassesCount-1);
File output = new File("pince.png");
//ImageIO.write(imagePixelLabelBuffered.get(labelClassesCount-1), "PNG", output);
int x = (index % this.width);
int y = (index / this.width);
g.drawImage(imagePixelLabelBuffered.get(labelClassesCount-1),x-20, y-31,100,100, null);
repaint();
}
答案 0 :(得分:0)
我的猜测是文件“pince.png”不在当前目录中。我建议你把你的图像放在类路径中,然后通过Class.getResource()或getResourceAsStream()加载它们。
答案 1 :(得分:0)
使用imagePixelLabelBuffered.add(img)
将BufferedImage添加到向量中,并且永远不会修改变量img
,因此您的问题不在于向量或BufferedImage。
我确实认为您的问题在changeColorPixelLabel(imagePixelLabelBuffered.get(labelClassesCount-1),labelClassesCount-1)
行,尤其是labelClassesCount-1
。这个变量永远不会更新,而且根本没用。您可以使用以下行:
changeColorPixelLabel(img, imagePixelLabelBuffered.size()-1);
img
,因此它仍然是您添加到Vector的BufferedImage上的指针。synchronized
操作的ArrayList,速度较慢。与行g.drawImage(imagePixelLabelBuffered.get(labelClassesCount-1),x-20, y-31,100,100, null)
相同,您可以使用变量img
。
[编辑]以下是BufferedImage cloning的链接。