diff --git a/html2image/src/main/java/gui/ava/html/image/HtmlImageGenerator.java b/html2image/src/main/java/gui/ava/html/image/HtmlImageGenerator.java index aaebabb..b1406e9 100644 --- a/html2image/src/main/java/gui/ava/html/image/HtmlImageGenerator.java +++ b/html2image/src/main/java/gui/ava/html/image/HtmlImageGenerator.java @@ -1,5 +1,6 @@ package gui.ava.html.image; +import gui.ava.html.Html2Image; import gui.ava.html.image.util.FormatNameUtil; import gui.ava.html.image.util.SynchronousHTMLEditorKit; import gui.ava.html.link.LinkInfo; @@ -23,12 +24,18 @@ */ public class HtmlImageGenerator { private JEditorPane editorPane; + private Color backgroundColor = Color.WHITE; static final Dimension DEFAULT_SIZE = new Dimension(800, 800); public HtmlImageGenerator() { editorPane = createJEditorPane(); } + public HtmlImageGenerator(Color backgroundColor) { + this.backgroundColor = backgroundColor; + editorPane = createJEditorPane(); + } + public ComponentOrientation getOrientation() { return editorPane.getComponentOrientation(); } @@ -133,14 +140,15 @@ public void saveAsImage(String file) { public void saveAsImage(File file) { BufferedImage image = getBufferedImage(); - BufferedImage bufferedImageToWrite = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); - bufferedImageToWrite.createGraphics().drawImage(image, 0, 0, Color.WHITE, null); + BufferedImage bufferedImageToWrite = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); + bufferedImageToWrite.createGraphics().drawImage(image, 0, 0, this.backgroundColor, null); final String formatName = FormatNameUtil.formatForFilename(file.getName()); try { - if (!ImageIO.write(bufferedImageToWrite, formatName, file)) + if (!ImageIO.write(bufferedImageToWrite, formatName, file)) { throw new IOException("No formatter for specified file type [" + formatName + "] available"); + } } catch (IOException e) { throw new RuntimeException(String.format("Exception while saving '%s' image", file), e); } @@ -155,6 +163,7 @@ public Dimension getDefaultSize() { public BufferedImage getBufferedImage() { JFrame frame = new JFrame(); + frame.getRootPane().setOpaque(false); frame.setPreferredSize(editorPane.getPreferredSize()); frame.setUndecorated(true); frame.add(editorPane); @@ -176,6 +185,7 @@ protected JEditorPane createJEditorPane() { final JEditorPane editorPane = new JEditorPane(); editorPane.setSize(getDefaultSize()); editorPane.setEditable(false); + editorPane.setBackground(this.backgroundColor); final SynchronousHTMLEditorKit kit = new SynchronousHTMLEditorKit(); editorPane.setEditorKitForContentType("text/html", kit); editorPane.setContentType("text/html");