Java图像编码输出的方法,提供编码进度监听,设置编码质量的支持(特定格式,例如 JPG)。 这个方法支持的编码格式依赖运行环境里 ImageIO 已经注册 ImageWriter 集合。 Java SE 6 中的 ImageIO 默认支持 JPG, BMP, PNG, GIF 等格式,也可以通过非标准类库添加 ImageIO 对图像格式的支持,比如安装 JAI_ImageIO 。 以下是引用片段: /** *//** * 将 BufferedImage 编码输出成硬盘上的图像文件。 * 这个方法支持的编码格式依赖运行环境里 ImageIO 已经注册 ImageWriter 集合。 * * @param file 编码输出的目标图像文件名,文件名的后缀确定编码格式。 * @param image 待编码的图像对象。 * @param quality 编码压缩的百分比。 * @param progressListener 编码进度的监听器。 * @return 返回编码输出成功与否。 */ public boolean writeImageFile(File file, BufferedImage image, int quality, IIOWriteProgressListener progressListener) ...{ try ...{ String suffix = getFileSuffix(file); if (suffix == null) ...{ return false; } Iterator it = ImageIO.getImageWritersBySuffix(suffix); if (it.hasNext()) ...{ FileImageOutputStream fileImageOutputStream = new FileImageOutputStream(file); ImageWriter iw = (ImageWriter) it.next(); ImageWriteParam iwp = iw.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality / 100.0f); iw.setOutput(fileImageOutputStream); iw.addIIOWriteProgressListener(progressListener); iw.write(null, new javax.imageio.IIOImage(image, null, null), iwp); iw.dispose(); fileImageOutputStream.flush(); fileImageOutputStream.close(); } } catch (Exception ex) ...{ ex.printStackTrace(); return false; } return true; } |
getFileSuffix() 顾名思义,是取得文件后缀的方法。 以下是引用片段: /** *//** * 取得文件后缀。 * 如果文件输入参数为 null 返回 null。 * * @param file * @return */ public String getFileSuffix(File file) ...{ if (file == null) ...{ return null; } return getFileSuffix(file.getName()); } /** *//** * 取得文件后缀。 * 如果文件名输入为 null 返回 null; * 如果没有取得后缀则返回 ""。 * * @param fileName * @return */ public String getFileSuffix(String fileName) ...{ if (fileName == null) ...{ return null; } String suffix = ""; int i = fileName.lastIndexOf('.'); if (i > 0 && i < fileName.length() - 1) ...{ suffix = fileName.substring(i + 1); } return suffix; } |
 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
|