2017-09-03 17 views
0

자바를 사용하여 두 개의 이미지를 함께 넣으려고합니다. 그래서 나는이 일을 다른 버퍼 이미지 위에 버퍼링 된 이미지를 그리기 시도했지만 최종 이미지가 여기에 약간 녹색 내 코드 이미지의 색상을 파괴 :다른 이미지에 버퍼링 된 이미지 그리기?

try 
{ 
BufferedImage source = ImageIO.read(new File("marker.png")); 
BufferedImage logo = ImageIO.read(new File("pic.png")); 

Graphics2D g = (Graphics2D) source.getGraphics(); 
g.drawImage(logo, 20, 50, null); 
File outputfile = new File("image.jpg"); 
ImageIO.write(source, "jpg", outputfile); 
} 
catch (Exception e) 
{ 
e.printStackTrace(); 
} 

답변

1

JPG 수 압축 중에 데이터를 엉망 - 출력 형식으로 png를 시도 할 수 있습니다.

필요한 색상이 모두 있는지 확인하려면 소스 이미지를 덮어 쓰는 대신 필요한 colordepth가있는 전용 대상 이미지를 사용하는 것이 좋습니다. 좋아요 :

BufferedImage target = new BufferedImage(source.getWidth(), source.getHeight(), BufferedImage.TYPE_INT_ARGB); 
Graphics2D g = (Graphics2D) target.getGraphics(); 
g.drawImage(source, 0, 0, null); 
g.drawImage(logo, 20, 50, null); 
File outputfile = new File("targetimage.png"); 
ImageIO.write(target, "png", outputfile);