문제

직사각형을 만들어야합니다 BufferedImage 지정된 배경색으로 배경에 패턴을 그려 파일에 저장하십시오. 배경을 만드는 방법을 모르겠습니다.

중첩 루프를 사용하고 있습니다.

BufferedImage b_img = ...
for every row
for every column
setRGB(r,g,b);

그러나 이미지가 커지면 매우 느립니다.

보다 효율적인 방식으로 색상을 설정하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

이미지의 그래픽 객체를 가져 와서 현재 페인트를 원하는 색상으로 설정 한 다음 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() );

다른 팁

아마도 : 아마도 :

BufferedImage image = new BufferedImage(...);
Graphics2D g2d = image.createGraphics();
g2d.setColor(...);
g2d.fillRect(...);

이것을 사용하십시오 :

BufferedImage bi = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_ARGB);
Graphics2D ig2 = bi.createGraphics();

ig2.setBackground(Color.WHITE);
ig2.clearRect(0, 0, width, height);
BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
int[]data=((DataBufferInt) image.getRaster().getDataBuffer()).getData();
Arrays.fill(data,color.getRGB());

생성 된 이미지를 파일에 저장하려는 사람을 위해 이전 답변을 사용하고 파일 저장 부분을 추가했습니다.

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

BMP, JPG 등과 같은 다른 형식으로 이미지를 저장할 수도 있습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top