栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java BufferedImage为PNG格式Base64字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java BufferedImage为PNG格式Base64字符串

我遵循xehpuk的回答,但是某些图像在某些浏览器中通过数据url(Chrome和Firefox,Safari似乎可以很好地渲染)时缺少最后几行像素时出现问题。我怀疑这是因为浏览器正在做最好的解释数据,但是数据的最后几个字节丢失了,所以它显示了它可以做什么。

输出流的包装似乎是导致此问题的原因。的文档

base64.wrap(OutputStream os)
说明:

建议在使用后立即关闭返回的输出流,在此期间它将所有可能的剩余字节刷新到基础输出流。

因此,根据数据的长度,有可能由于

close()
未对其调用而没有从流中清除最后几个字节。我对此的解决方案是不打扰包装流,而只是直接编码流:

public static String imgTobase64String(final RenderedImage img, final String formatName){  final ByteArrayOutputStream os = new ByteArrayOutputStream();  try  {    ImageIO.write(img, formatName, os);    return base64.getEnprer().enpreToString(os.toByteArray());  }  catch (final IOException ioe)  {    throw new UncheckedIOException(ioe);  }}

这解决了在浏览器中渲染时缺少像素行的问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号