2013-08-18 5 views
1

JLabel에서 HTML 스타일을 사용하고 BufferedImage를 jpg로 변환하려고합니다. 그러나 색상이 내가 예상했던 것과는 전혀 다릅니다. 당신은 텍스트 색상이 검은 색 아니다 볼 수 있듯이HTML 문자열을 사용할 때 JLabel의 색이 잘못되었습니다.

val html = "<html><body style='width: 400px; padding: 5px; margin:0; color:#000;'>" + "<h1>teststring1</h1>" + key + " <h2>teststring</h2><body></html>" 
val textLabe = new JLabel(html) 
textLabe.setSize(textLabe.getPreferredSize) 
val d: Dimension = textLabe.getPreferredSize 
val bi: BufferedImage = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_ARGB) 
val g = bi.createGraphics 
textLabe.paint(g) 

val a = new ByteArrayOutputStream() 
ImageIO.write(bi, "jpg", a) 

와 배경이 검은 색 대신 흰색입니다 : 여기

는 코드입니다. setForeground (Colors.white), setBackground (Colors.white) 및 setOpaque (true)를 설정하려고했으나이 경우 배경색이 분홍색으로 바뀝니다.

는이 문제를 어떻게 해결할 수 enter image description here ?

답변

3

이 경우 배경색이 분홍색으로 변합니다.

사용중인 JDK/JRE는 확실하지 않지만 JPEGImageWriter에 문제가있는 것 같습니다. 특히 알파를 처리하는 방식이 다릅니다.

해결책으로서 BufferedImage TYPE_INT_ARGB TYPE_INT_RGB 또는 TYPE_3BYTE_RGB 대신 사용을 시도하거나 대안 PNG 등의 화상 물품.

그런 다음 setOpaque(true)을 사용하여 배경이 칠해 졌는지 확인하고 setBackground(Color.WHITE)을 사용하여 올바른 배경색을 설정하십시오. 을 입력하면의 이미지가 올바르게 출력됩니다.

+0

실제로 다른 옵션을 시도했지만 TYPE_INT_RGB가 작동한다고 생각하지 않았습니다. 고마워요! –