Set BufferedImage to be a color in Java

前端 未结 5 948
既然无缘
既然无缘 2021-01-07 19:52

I need to create a rectangular BufferedImage with a specified background color, draw some pattern on the background and save it to file. I don\'t know how to cr

相关标签:
5条回答
  • 2021-01-07 20:02

    Get the graphics object for the image, set the current paint to the desired colour, then call fillRect(0,0,width,height).

    BufferedImage b_img = ...
    Graphics2D    graphics = b_img.createGraphics();
    
    graphics.setPaint ( new Color ( r, g, b ) );
    graphics.fillRect ( 0, 0, b_img.getWidth(), b_img.getHeight() );
    
    0 讨论(0)
  • 2021-01-07 20:05

    For who want also to save the created image to a file, I have used previous answers and added the file saving part:

    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.color.ColorSpace;
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    
    // Create the image
    BufferedImage bi = new BufferedImage(80, 40, ColorSpace.TYPE_RGB);
    Graphics2D graphics = bi.createGraphics();
    
    // Fill the background with gray color
    Color rgb = new Color(50, 50, 50);
    graphics.setColor (rgb);
    graphics.fillRect ( 0, 0, bi.getWidth(), bi.getHeight());
    
    // Save the file in PNG format
    File outFile = new File("output.png");
    ImageIO.write(bi, "png", outFile);
    

    You can also save the image in other formats like bmp, jpg, etc...

    0 讨论(0)
  • 2021-01-07 20:10

    Probably something like:

    BufferedImage image = new BufferedImage(...);
    Graphics2D g2d = image.createGraphics();
    g2d.setColor(...);
    g2d.fillRect(...);
    
    0 讨论(0)
  • 2021-01-07 20:22

    Use this:

    BufferedImage bi = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_ARGB);
    Graphics2D ig2 = bi.createGraphics();
    
    ig2.setBackground(Color.WHITE);
    ig2.clearRect(0, 0, width, height);
    
    0 讨论(0)
  • 2021-01-07 20:26
    BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
    int[]data=((DataBufferInt) image.getRaster().getDataBuffer()).getData();
    Arrays.fill(data,color.getRGB());
    
    0 讨论(0)
提交回复
热议问题