将图片转换为字节方式存储到Byte数组中

c0010012255 2011-02-03 02:30:17
有一个方式是用 ImageIO.write(RenderedImage im, String formatName, File output)
但这样就要牵扯到用一个文件来保存 有没有办法不用这种文件保存的方式来转换吗?求解
...全文
994 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2011-02-03
  • 打赏
  • 举报
回复
ImageIO是个让人爱,又让人恨的东西,读取出来的图片如果使用BufferedImageOp去操作,经常会发现用他读取的图片处理时常出问题,抛出异常.
  • 打赏
  • 举报
回复
是啊,一般来说不会把图片字节存到库中去的,这样不管在效率和实现上都很麻烦。这个图片要能被再显示出来的话,那至少还得再存个图片的 MIME 格式吧,就是 image/gif 之类的。

建议在应用服务器上建一个虚拟路径,把图片存到那个虚拟路径下,然后数据库中存个路径的相对地址就行了。

拿 Tomcat 来说,在 server.xml 中加一句:

<Context path="/resource" docBase="/home/name/resource" />

然后把图片分门别类地在 /home/name/resource 路径下创建目录并存放进去,比如 /home/name/resource/icon/10233413412342.gif,数据表中存个 /icon/10233413412342.gif 就可以。在页面上这样就能显示了:

http://localhost:8080/resource/icon/10233413412342.gif
冰思雨 2011-02-03
  • 打赏
  • 举报
回复
这是小的图片才可以使用的方法。
大型图片,不建议使用ImageIO来操作,
该类设计之初,应该是为了处理图标的吧(Icon)。

如果想把图片的最终内容保存在内存当中。
沿用楼主的方式,果子的方法是最简单的了。

实际上,我觉得JDK里面使用图像,多用RenderedImage类吧?
这个类的对象实例,不就是保存着图像信息吗?而且也在内存中啊。
  • 打赏
  • 举报
回复
用这个方法就可以了

write(RenderedImage im, String formatName, OutputStream output)

最后一个参数传个 ByteArrayOutputStream 进去,然后使用这个对象的 toByteArray() 就成字组数组了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧