java - Graphics2D setColor 的奇怪颜色行为

标签 java awt paint graphics2d

我正在拍摄一张图像并在其上绘制一个矩形,但问题是,对于某些图像,矩形颜色很好,但对于其他图像,颜色会发生变化。我该如何解决这种行为

这是我的代码

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"));   
}
}

这是两个不同输出的示例

输出错误

Worng output

右输出

Rigth output

这些是原始图像的链接

http://imageshack.com/a/img661/1940/bqwmPL.jpg

http://imageshack.com/a/img903/1447/vDwVtf.jpg

预先感谢您的时间和解答

最佳答案

根据@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"));   


}


}

关于java - Graphics2D setColor 的奇怪颜色行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293517/

相关文章:

java - 如何在 Java Swing 中在两点之间拖动和绘制线

java - 获取 JPanel 坐标的 x 和 y 偏移量

useDelimiter() 中的 Java 错误

Java重绘不更新

java - JPopupMenu 没有显示在屏幕上?

Android:在不同的屏幕密度上绘制相同尺寸的直线或圆圈

Java:如何将绘制的文本动态地适合窗口

java - java android 中的等待/恢复线程

java - HttpConnection 不要关闭

java - 当向我的 cpanel ftp 服务器发出注销命令时,它返回 500 错误未知命令