Java HTML文本转换为图像并另存为blob到数据库

Java HTML文本转换为图像并另存为blob到数据库,java,graphics,bufferedimage,javax.imageio,Java,Graphics,Bufferedimage,Javax.imageio,我已将富格文本转换为图像,并将其作为blob保存到db。Blob可以从本地服务器(WINDOWS)创建,但部署到应用服务器(LINUX)时创建。图像格式(字体、清晰度)已更改。我不知道我必须做什么。请给我点光。下面是我使用的代码 BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); Graphics graphics = image.

我已将富格文本转换为图像,并将其作为blob保存到db。Blob可以从本地服务器(WINDOWS)创建,但部署到应用服务器(LINUX)时创建。图像格式(字体、清晰度)已更改。我不知道我必须做什么。请给我点光。下面是我使用的代码

        BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);      
            Graphics graphics = image.createGraphics();
            JEditorPane jep = new JEditorPane("text/html", html);
            jep.setSize(width, height);
            jep.print(graphics);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ImageIO.write(image, "png", new File("C:\\Dev\\img8_TYPE_INT_RGB.png"));
            ImageIO.write(image, "png", bos);
哪种图像格式适合文本内容

提前谢谢

来自本地服务器(WINDOWS)的映像

来自Linux服务器(应用程序服务器)(Linux)的映像


我也使用了此代码,但仍然存在相同的问题

BufferedImage image = new BufferedImage(width, height,
                        BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();               
graphics.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
graphics.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
graphics.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
JEditorPane jep = new JEditorPane("text/html", html);
jep.setSize(width, height);
jep.print(graphics);

您可以指定两种图像格式,JPEG用于写入(特定于Windows的)文件,GIF用于写入内存流。你说的“图像格式(字体、清晰度)改变了”是什么意思?如果您发布与Windows和Linux输出的并排比较,可能更容易理解/可视化。字体/反别名很可能已更改,因为您使用了Swing组件(
JEditorPane
),该组件对Windows和Linux(Gnome/KDE/任何东西)具有不同的“外观”。您可以通过跨平台的外观来解决这个问题。我在这里复制的图像都是.png类型,一个来自本地,另一个来自服务器并使用BuffereImage.type_INT_RGB。。让我来编辑我的代码。您以前存储的字体和清晰度文本是什么?它是否也显示在
JEditorPane
中?在JEditorPane中是-“字体系列:Arial,Verdana;字体大小:13.3333px。看看我复制的图像。两种平台上都有Arial吗?您使用的Swing外观和感觉是什么(对于每个平台)?您使用什么Java2D渲染管道?如果希望得到相同的结果,您可能需要在两个平台上使用相同的管道。