网站办公室,从事网站建设需要什么资质,建设电子商务网站的方案,哪个做网站根据企业真实需求背景#xff0c;java实现jpg、png、tif、gif 任意图像格式转换
方法名说明imageConvertCommon任意图像转换通用类imageConvertToGIF图像任意格式转gifimageConvertToTif图像任意格式转tifimageConvertToJPG图像任意格式转jpgimageConvertToPNG图像任意格式转…根据企业真实需求背景java实现jpg、png、tif、gif 任意图像格式转换
方法名说明imageConvertCommon任意图像转换通用类imageConvertToGIF图像任意格式转gifimageConvertToTif图像任意格式转tifimageConvertToJPG图像任意格式转jpgimageConvertToPNG图像任意格式转png
说一下特殊处理的部分就是动态传后缀名这个地方重命名用的是带.的但是在格式转换这一行是不带.的这里要注意可以采用替换或者截取的方式这里才去的是替换都一样吧
if (!ImageIO.write(bi, fileSuffix.replace(.,), new File(sDestImage))) {System.out.println( JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 转换图像格式发生异常);return false;}涉及的jar包由于jar收拾收费的因此大家可以去我的开源项目中
下载需要的jar饱即可(见文章底部)
jai_imageio.jar
jimi-1.0.jarpackage com.gblfy.util;import com.sun.jimi.core.Jimi;
import com.sun.jimi.core.JimiException;
import com.sun.jimi.core.JimiWriter;
import com.sun.jimi.core.options.JPGOptions;
import com.sun.jimi.core.options.PNGOptions;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.ImageProducer;
import java.io.File;/********************************************************************************* direction: 图像格式转换类(转换时不需要关心源图的格式)* support : GIF(no compressed encoding), JPEG, TIFF, PNG, PICT, BMP, Targa,* ICO, CUR, XBM, XPM, PCX, DCX* author : gblfy******************************************************************************/
public class ImageConverUtil {/*** 任意图片转换** param sSourceImage 源图片* param sDestImage 转换后的图片* param fileSuffix 转换后的图片扩展名* return*/public static boolean imageConvertCommon(String sSourceImage, String sDestImage, String fileSuffix) {if (sSourceImage null || sSourceImage.trim().equals()) {System.out.println(JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 要转换的源图像文件路径不能为空);return false;}if (sDestImage null || sDestImage.trim().equals()) {sDestImage sSourceImage.substring(0, sSourceImage.lastIndexOf(.)) fileSuffix;} else if (!sDestImage.endsWith(fileSuffix)) {sDestImage fileSuffix;}//检查源图像文件File tSourceImageFile new File(sSourceImage);if (!tSourceImageFile.exists()) {System.out.println(JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 要转换的源图像文件路径不存在);return false;} else if (!tSourceImageFile.canRead()) {System.out.println(JimiImageUtil.convertTo fileSuffix.toUpperCase() (): 要转换的源图像文件路径不可读);return false;} else if (!tSourceImageFile.isFile()) {System.out.println(JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 要转换的源图像路径不是一个有效的文件名);return false;}long lRunStartTime System.currentTimeMillis();try {BufferedImage bi ImageIO.read(tSourceImageFile);if (bi null) {//图片解码错误System.out.println(Jre: System.getProperty(java.version));System.out.println( JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 要转换的源图像解码错误);return false;}if (!ImageIO.write(bi, fileSuffix.replace(.,), new File(sDestImage))) {System.out.println( JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 转换图像格式发生异常);return false;}long lRunEndTime System.currentTimeMillis();long lRunTime lRunEndTime - lRunStartTime;System.out.println( JimiImageUtil.convertToJPG() 运行时间 : lRunTime 毫秒);} catch (Exception e) {System.out.println( JimiImageUtil.convertTo fileSuffix.toUpperCase() () : 转换图像格式发生异常);return false;}return true;}/*** 图片转gif** param sSourceImage 源图片的绝对路径 D:\5\1.jpg D:\5\1.png* param sDestImage 转换后的gif图片路径 D:\5\1.gif* return*/public static boolean imageConvertToGIF(String sSourceImage, String sDestImage) {if (sSourceImage null || sSourceImage.trim().equals()) {System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像文件路径不能为空);return false;}if (sDestImage null || sDestImage.trim().equals()) {sDestImage sSourceImage.substring(0, sSourceImage.lastIndexOf(.)) .gif;} else if (!sDestImage.endsWith(.gif)) {sDestImage .gif;}//检查源图像文件File tSourceImageFile new File(sSourceImage);if (!tSourceImageFile.exists()) {System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像文件路径不存在);return false;} else if (!tSourceImageFile.canRead()) {System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像文件路径不可读);return false;} else if (!tSourceImageFile.isFile()) {System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像路径不是一个有效的文件名);return false;}try {BufferedImage bi ImageIO.read(tSourceImageFile);if (bi null) {//图片解码错误System.out.println(Jre: System.getProperty(java.version));System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像解码错误);return false;}if (!ImageIO.write(bi, gif, new File(sDestImage))) {System.out.println( JimiImageUtil.convertToGIF() : 转换图像格式发生异常);return false;}} catch (Exception e) {System.out.println( JimiImageUtil.convertToGIF() : 转换图像格式发生异常);return false;}return true;}/*** 图片转Tif** param sSourceImage* param sDestImage* return*/public static boolean imageConvertToTif(String sSourceImage, String sDestImage) {if (sSourceImage null || sSourceImage.trim().equals()) {System.out.println( JimiImageUtil.convertToGIF() : 要转换的源图像文件路径不能为空);return false;}if (sDestImage null || sDestImage.trim().equals()) {sDestImage sSourceImage.substring(0, sSourceImage.lastIndexOf(.)) .tif;} else if (!sDestImage.endsWith(.tif)) {sDestImage .tif;}//检查源图像文件File tSourceImageFile new File(sSourceImage);if (!tSourceImageFile.exists()) {System.out.println( JimiImageUtil.convertToTif() : 要转换的源图像文件路径不存在);return false;} else if (!tSourceImageFile.canRead()) {System.out.println( JimiImageUtil.convertToTif() : 要转换的源图像文件路径不可读);return false;} else if (!tSourceImageFile.isFile()) {System.out.println( JimiImageUtil.convertToTif() : 要转换的源图像路径不是一个有效的文件名);return false;}try {BufferedImage bi ImageIO.read(tSourceImageFile);if (bi null) {//图片解码错误System.out.println(Jre: System.getProperty(java.version));System.out.println( JimiImageUtil.convertToTif() : 要转换的源图像解码错误);return false;}if (!ImageIO.write(bi, tif, new File(sDestImage))) {System.out.println( JimiImageUtil.convertToTif() : 转换图像格式发生异常);return false;}} catch (Exception e) {System.out.println(JimiImageUtil.convertToTif() : 转换图像格式发生异常);return false;}return true;}/*** 转换图像格式为 JPG** param sSourceImage, 其它格式的源图像文件路径* param sDestImage, 目标 JPG 图像文件存放路径* param nQuality, 品质, 0-100, 数值越高品质越好* return*/public static boolean imageConvertToJPG(String sSourceImage, String sDestImage, int nQuality) {if (sSourceImage null || sSourceImage.trim().equals()) {System.out.println( JimiImageUtil.convertToJPG() : 要转换的源图像文件路径不能为空);return false;}if (sDestImage null || sDestImage.trim().equals()) {sDestImage sSourceImage.substring(0, sSourceImage.lastIndexOf(.)) .jpg;} else if (!sDestImage.endsWith(.jpg)) {sDestImage .jpg;}//检查源图像文件File tSourceImageFile new File(sSourceImage);if (!tSourceImageFile.exists()) {System.out.println( JimiImageUtil.convertToJPG() : 要转换的源图像文件路径不存在);return false;} else if (!tSourceImageFile.canRead()) {System.out.println( JimiImageUtil.convertToJPG() : 要转换的源图像文件路径不可读);return false;} else if (!tSourceImageFile.isFile()) {System.out.println( JimiImageUtil.convertToJPG() : 要转换的源图像路径不是一个有效的文件名);return false;}tSourceImageFile null;try {long lRunStartTime System.currentTimeMillis();JPGOptions tJPGOptions new JPGOptions();if (nQuality 0 || nQuality 100) {tJPGOptions.setQuality(75);} else {tJPGOptions.setQuality(nQuality);}ImageProducer tImageProducer Jimi.getImageProducer(sSourceImage);JimiWriter tJimiWriter Jimi.createJimiWriter(sDestImage);tJimiWriter.setSource(tImageProducer);tJimiWriter.setOptions(tJPGOptions);tJimiWriter.putImage(sDestImage);tImageProducer null;tJimiWriter null;tJPGOptions null;long lRunEndTime System.currentTimeMillis();long lRunTime lRunEndTime - lRunStartTime;System.out.println( JimiImageUtil.convertToJPG() 运行时间 : lRunTime 毫秒);} catch (JimiException je) {System.out.println( JimiImageUtil.convertToJPG() : 转换图像格式发生异常);je.printStackTrace();return false;} catch (Exception ex) {ex.printStackTrace();return false;}return true;}/*** 转换图像格式为 PNG** param sSourceImage , 其它格式的源图像文件路径* param sDestImage ,目标 PNG 图像文件存放路径* param sCompression ,压缩比, none, default, fast, max* return*/public static boolean imageConvertToPNG(String sSourceImage, String sDestImage, String sCompression) {if (sSourceImage null || sSourceImage.trim().equals()) {System.out.println( JimiImageUtil.convertToPNG() : 要转换的源图像文件路径不能为空);return false;}if (sDestImage null || sDestImage.trim().equals()) {sDestImage sSourceImage.substring(0, sSourceImage.lastIndexOf(.)) .png;} else if (!sDestImage.endsWith(.png)) {sDestImage .png;}//----------------------------------------------------------------------//检查源图像文件File tSourceImageFile new File(sSourceImage);if (!tSourceImageFile.exists()) {System.out.println( JimiImageUtil.convertToPNG() : 要转换的源图像文件路径不存在);return false;} else if (!tSourceImageFile.canRead()) {System.out.println( JimiImageUtil.convertToPNG() : 要转换的源图像文件路径不可读);return false;} else if (!tSourceImageFile.isFile()) {System.out.println( JimiImageUtil.convertToPNG() : 要转换的源图像路径不是一个有效的文件名);return false;}tSourceImageFile null;try {long lRunStartTime System.currentTimeMillis();PNGOptions tPNGOptions new PNGOptions();if (sCompression null || sCompression.trim().equals()) {tPNGOptions.setCompressionType(PNGOptions.COMPRESSION_DEFAULT);} else if (sCompression.equalsIgnoreCase(none)) {tPNGOptions.setCompressionType(PNGOptions.COMPRESSION_NONE);} else if (sCompression.equalsIgnoreCase(fast)) {tPNGOptions.setCompressionType(PNGOptions.COMPRESSION_FAST);} else if (sCompression.equalsIgnoreCase(max)) {tPNGOptions.setCompressionType(PNGOptions.COMPRESSION_MAX);} else {tPNGOptions.setCompressionType(PNGOptions.COMPRESSION_DEFAULT);}ImageProducer tImageProducer Jimi.getImageProducer(sSourceImage);JimiWriter tJimiWriter Jimi.createJimiWriter(sDestImage);tJimiWriter.setSource(tImageProducer);tJimiWriter.setOptions(tPNGOptions);tJimiWriter.putImage(sDestImage);tImageProducer null;tJimiWriter null;tPNGOptions null;long lRunEndTime System.currentTimeMillis();long lRunTime lRunEndTime - lRunStartTime;System.out.println( JimiImageUtil.convertToPNG() 运行时间 : lRunTime 毫秒);} catch (JimiException je) {System.out.println( JimiImageUtil.convertToPNG() : 转换图像格式发生异常);je.printStackTrace();return false;} catch (Exception ex) {ex.printStackTrace();return false;}return true;}public static void main(String[] args) {// jpg png gif tif 图片格式互转String inputFilePath D: File.separator 7 File.separator 1.jpg;String outputFilePath D: File.separator 7 File.separator 1.tif;String fileSuffix tif;ImageConverUtil.imageConvertCommon(outputFilePath, inputFilePath, fileSuffix);System.out.println(-----------------执行完成-------------);//png /jpg 转tif// String inputFilePath D: File.separator 6 File.separator 1.jpg;// String inputFilePath D: File.separator 6 File.separator 1.png;// String outputFilePath D: File.separator 6 File.separator 1.tif;// ImageConverUtil.imageConvertToTif(inputFilePath, outputFilePath);// System.out.println(-----------------执行完成-------------);//png /jpg 转gif// String inputFilePath D: File.separator 5 File.separator 1.png;// String inputFilePath D: File.separator 5 File.separator 1.jpg;// String outputFilePath D: File.separator 5 File.separator 1.gif;// ImageConverUtil.imageConvertToGIF(inputFilePath, outputFilePath);// System.out.println(-----------------执行完成-------------);// png转jpg// String inputFilePath D: File.separator 4 File.separator 1.tif;// String outputFilePath D: File.separator 4 File.separator 1.jpg;// ImageConverUtil.imageConvertToJPG(inputFilePath, outputFilePath, 100);// System.out.println(-----------------执行完成-------------);// jpg 转png// String inputFilePath D: File.separator 3 File.separator 1.jpg;// String outputFilePath D: File.separator 3 File.separator 1.png;// ImageConverUtil.imageConvertToPNG(inputFilePath, outputFilePath, default);// System.out.println(-----------------执行完成-------------);}
}jar下载链接https://download.csdn.net/download/weixin_40816738/46766690