【问题标题】:Image gets blurred when added to Excel through JXL通过 JXL 添加到 Excel 时图像变得模糊
【发布时间】:2011-08-16 12:08:10
【问题描述】:

我使用 JXL API 将图像添加到 Excel 文件。使用的库:
jcommon (1.0.14)
jfreechart (1.0.13)
jxl (2.6.10)

// chartImage is of type BufferedImage
com.KeyPoint.PngEncoder encoder = new com.KeyPoint.PngEncoder(chartImage, true, 0, 0); 
jxl.write.WritableImage image = new jxl.write.WritableImage(0, 2, (chartImage.getWidth()/100),16, 
encoder.pngEncode());
sheet.addImage(image);

问题在于 WritableImage 构造函数采用行和列的宽度和高度(宽度:第 0 列到列 chartImage.getWidth()/100,高度:第 2 行到第 16 行)。这会导致图表图像模糊。
如何使用 JXL 将原始图像导入 Excel?请帮忙。谢谢! :-)

【问题讨论】:

    标签: image jfreechart blur jxl


    【解决方案1】:

    问题在于 Excel 中使用的压缩或您使用的编码器。

    一个可行的解决方案是绘制比预期图像更大的图表,然后让 Excel 进行缩小。尽管充满图表的工作簿会比以前大得多,但这确保了清晰度。

    AFAIK 是解决问题的唯一方法。我在使用 Word 和 PowerPoint 时遇到过类似的问题,而且解决方案似乎正在升级。

    当您缩放图表时,您应该注意字体大小也需要更改。

    【讨论】:

    • 出色而简单的解决方案 Jes... 也为我工作.. 谢谢! :)
    【解决方案2】:

    不要直接使用PngEncoder。相反,请使用相关的 ChartUtilities 方法,如果可用,它将找到 Sun/Oracle PNG 编码器。

    【讨论】:

    • 你能把JFreeChartJXL的范围缩小吗?
    • 对不起,我不明白(请原谅我的知识)。我的问题是 WritableImage 类迫使我分别以数字列和行数来指定图像的宽度和高度,我认为这会导致图像模糊。图像失去清晰度(作为图表,应该非常清晰)。
    • 抱歉,我的问题措辞不当。听起来JFreeChart制作的图像是可以的。我猜WritableImage 使用的是次优插值类型。对于 example 使用 TYPE_BILINEARTYPE_BICUBIC,有什么方法可以预缩放到所需的大小?
    • 我尝试了 Jes 的简单解决方案。它也涉及升级。感谢您的帮助。我会在业余时间尝试使用插值,因为我这次要赶时间..:P
    • 由于保留了原始图像,您可以尝试增加目标单元格的数量作为临时解决方法。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2018-03-22
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多