저는 이것이 합성과 관련이 있다는 것을 알고 있지만, 나는 무엇을 해결할 수 없는지 알고 있습니다.BufferedImage의 투명 영역이 검정색으로 바뀌고 있습니다.
for(Pixel p : closed){
Color c = new Color(image.getRGB(p.x, p.y));
Color newC = new Color(0,0,0, 0);
image.setRGB(p.x, p.y, newC.getRGB() & 0x00000000);
}
if(andCrop){
image = image.getSubimage(left, top, right-left, bottom-top);
}
return image;
가 그럼 난 이미지를 쓰려고 : 코드의 이전 섹션에서 BufferedImage의 픽셀의 특정 목록이 투명 검은 색으로 설정되어
try {
BufferedImage out = new BufferedImage(image.getWidth(), image.getHeight(), java.awt.Transparency.TRANSLUCENT);
Graphics2D g2d = out.createGraphics();
g2d.setComposite(AlphaComposite.Clear);
g2d.fillRect(0, 0, image.getWidth(), image.getHeight());
g2d.setComposite(AlphaComposite.Src);
g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
g2d.dispose();
File outputfile = new File(file);
ImageIO.write(out, "png", outputfile);
} catch (IOException e) {
}
을 지금, 나는 알고 이미지를 그려 넣으려고하기 전에 'out'이 분명합니다. 내가 얻지 못하는 것은 합성에있어 잘못된 점입니다. 투명하게 나오지 않고, 나는 완전히 검게 변합니다.
사용 된 모든 버퍼링 된 이미지는 INT_ARGB입니다.
편집 -이 문제가 해결되었습니다. ImageIO.read의 이미지 소스이며 반환 된 BufferedImage가 알파를 지원하지 않았습니다. 빠른 포스트 읽기 변환을 통해 나머지 코드는 원활하게 실행됩니다. 내 마음에 오는
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –
BTW - ['BufferedImage.TYPE_INT_ARGB'] (http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.image.BufferedImage.TYPE_INT_ARGB)를 사용하면 이미지 유형이 아닌 ['Transparency.TRANSLUCENT'] (http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.Transparency.TRANSLUCENT)를 참조하십시오. –