Dan*_*cco 5 java format scaling image
我正在编写一个Web应用程序,允许用户以多种格式上传图像(例如png,jpg,bmp).上传图像后,系统应将其转换为"png"并将其缩放到预定义的分辨率.
要转换图像,我使用方便的方法:
javax.imageio.ImageIO.write(im, type, baos);
Run Code Online (Sandbox Code Playgroud)
这是问题的起点.Image javax.imageio.ImageIO.write的第一个参数是RenderedImage.Java Doc声明唯一已知的实现是BufferedImage.
我试图找到一种方法将java.awt.Image转换为BufferedImage,但似乎不可能.但是,可以在BufferedImage上绘制图像.
问题是每次创建一个新的BufferedImage都非常昂贵.我可以开始创建一个BufferedImage池,但我正在寻找聪明/新闻的想法.
小智 5
试试Thumbnailator库:http://code.google.com/p/thumbnailator/
示例代码:
Thumbnails.of("large-picture.jpg")
.scale(1.0)
.outputFormat("png")
.toOutputStream(os);
Run Code Online (Sandbox Code Playgroud)
库提供的更像缩放,大小调整,裁剪,旋转,水印等.
您可以查看 BufferedImage 的实现并实现您自己的(也许是基于文件的实现?)。这些课程通常读起来非常简单,通常有 50-70% 的注释,而且写得很清楚。
他们给出了来源,为什么不利用它们呢?