我正在拍摄一张图片并在上面画一个矩形,但问题是,对于某些图像,矩形颜色很好,但其他颜色会发生变化。我该如何解决这种行为
这是我的代码
public class Index {
static int[][] coordenadas = new int[1][4];
public static void main(String[] args) throws IOException {
coordenadas[0][0]=530;
coordenadas[0][1]=237;
coordenadas[0][2]=86;
coordenadas[0][3]=17;
//File file = new File("C:\\Users\\Juan\\Desktop\\2.jpg");
File file = new File("C:\\Users\\Juan\\Desktop\\1.jpg");
paint(file);
}
public static void paint(File file) throws IOException{
BufferedImage img = ImageIO.read(file);
Graphics2D g = img.createGraphics();
g.setColor(Color.yellow);
//g.drawRect(coordenadas[0][0], coordenadas[0][2], coordenadas[0][2], coordenadas[0][3]);
g.fillRect(coordenadas[0][0], coordenadas[0][3], coordenadas[0][2], coordenadas[0][3]);
g.dispose();
ImageIO.write(img,"jpg", new File("C:\\Users\\Juan\\Desktop\\outcome.jpg"));
}
}
这是2个不同输出的示例
Worng输出
Rigth输出
这些是原始图像的链接
http://imageshack.com/a/img661/1940/bqwmPL.jpg
http://imageshack.com/a/img903/1447/vDwVtf.jpg
提前感谢您的时间和下水道
答案 0 :(得分:0)
根据@mrKobel的建议,我改变了加载图像的方式,从文件到ImageIcon,以及所有工作。这是新代码。
public class Index {
static int[][] coordenadas = new int[1][4];
static BufferedImage bi ;
public static void main(String[] args) throws IOException {
coordenadas[0][0]=530;
coordenadas[0][1]=237;
coordenadas[0][2]=86;
coordenadas[0][3]=17;
ImageIcon img = new ImageIcon("C:\\Users\\Juan\\Desktop\\2.jpg");
BufferedImage image = new BufferedImage(img.getIconWidth(), img.getIconHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)image.getGraphics();
img.paintIcon(null, g2d, 0, 0);
Color color = new Color(255,255,0,100);
g2d.setColor(color);
g2d.fillRect(coordenadas[0][0], coordenadas[0][1], coordenadas[0][2], coordenadas[0][3]);
ImageIO.write( image,"jpg", new File("C:\\Users\\Juan\\Desktop\\outcome.jpg"));
}
}