绝对经典Java开源工具Jimi处理图片大小及格式转换及打水印(源码

刚转换完视频,现在又得做图片转换,用了java的开源软件jimi图片处理工具,编写了一个图片转换工具类,包括了给图片打水印,给大家分享。

importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.awt.image.ImageProducer;importjava.io.File;importjava.io.IOException;

importjavax.imageio.ImageIO;

importcom.sun.jimi.core.Jimi;importcom.sun.jimi.core.JimiException;importcom.sun.jimi.core.JimiWriter;importcom.sun.jimi.core.options.JPGOptions;

publicclassTransferPicture{/***@paramsource*@paramdest*@paramquality*图片格式转换*/publicvoidtoJPG(Stringsource,Stringtype,intquality){//0<quality<100if(quality<0||quality>100||(quality+””)==null||(quality+””).equals(“”)){System.out.println(“qualitymustbetween’0’and’100’”);System.out.println(“settoDEFAULTvalue:’75’”);quality=75;}Stringoutfile=ConvertUtil.getFilename(source)+type;try{JPGOptionsoptions=newJPGOptions();options.setQuality(quality);ImageProducerimage=Jimi.getImageProducer(source);JimiWriterwriter=Jimi.createJimiWriter(outfile);writer.setSource(image);//加入属性设置,非必要///*writer.setOptions(options);//*/writer.putImage(outfile);}catch(JimiExceptionje){System.err.println(“Error:”+je);}}/***@paramsource*@paramdest*@throwsJimiException*/publicvoidtoGIF(Stringsource,Stringdest)throwsJimiException{if(dest==null||dest.trim().equals(“”))dest=source;//1:转换为jpgif(!dest.toLowerCase().trim().endsWith(“jpg”)){dest+=”.jpg”;}toJPG(source,dest,75);

BufferedImagefile_in=null;Filefile=newFile(dest);try{file_in=javax.imageio.ImageIO.read(file);}catch(Exceptione){e.printStackTrace();}

intend=dest.lastIndexOf(“.”);file.deleteOnExit();//output*.giffile.renameTo(newFile(dest.substring(0,end)+”.gif”));//jpgtogifAnimatedGifEncodere=newAnimatedGifEncoder();e.start(dest);e.addFrame(file_in);e.finish();/*//分解GIF:GifDecoderd=newGifDecoder();d.read(“sample.gif”);intn=d.getFrameCount();for(inti=0;i<n;i++){BufferedImageframe=d.getFrame(i);//frame iintt=d.getDelay(i);// display duration of frame in milliseconds// do something with frame}

//合成GIF:AnimatedGifEncodere=newAnimatedGifEncoder();e.start(outputFileName);e.setDelay(1000);// 1 frame per sece.addFrame(image1);e.addFrame(image2);e.finish();*/}/***@paramimg*@paramdest*@throwsJimiException*/publicvoidtoTIF(Imageimg,Stringdest)throwsJimiException{if(!dest.toLowerCase().trim().endsWith(“tif”)){dest+=”.tif”;System.out.println(“OverridingtoTIF,outputfile:”+dest);}dest=dest.substring(0,dest.lastIndexOf(“.”))+”.jpg”;try{System.out.println(“toTIFencode”);JimiWriterwriter=Jimi.createJimiWriter(dest);writer.setSource(img);dest=dest.substring(0,dest.lastIndexOf(“.”))+”.tif”;writer.putImage(dest);}catch(Exceptione){e.printStackTrace();}}

/***线性改变图片尺寸(可同时改变图片格式)*@paramsource*源文件完整路径*@paramdesc*目标文件完整路径*@paramins*放大/缩小比率*@throwsJimiException*@throwsIOException*/publicvoidchangeDimension(Stringsource,Stringdesc,doubleins)throwsJimiException,IOException{Stringtemp=desc;File_file=null;if(desc==null||desc.trim().equals(“”))desc=source;if(!desc.toLowerCase().trim().endsWith(“jpg”)){temp=desc.trim()+”.jpg”;}this.toJPG(source,temp,75);_file=newFile(temp);//读入文件

Imagesrc=javax.imageio.ImageIO.read(_file);//构造Image对象doublewideth=(double)src.getWidth(null);//得到源图宽doubleheight=(double)src.getHeight(null);//得到源图长System.out.println(“源图宽:”+wideth);System.out.println(“源图长:”+height);/*//缩放处理intiWideth=(int)(wideth*ins);intiHeight=(int)(height*ins);*/intiWideth=300;intiHeight=200;System.out.println(“现图宽:”+iWideth);System.out.println(“现图长:”+iHeight);System.out.println(“缩放参数:”+ins);BufferedImagetag=null;try{tag=newBufferedImage(iWideth,iHeight,BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(src,0,0,iWideth,iHeight,null);//绘制缩小后的图/*//打水印File_filebiao=newFile(“test2.jpg”);Imagesrc_biao=ImageIO.read(_filebiao);intwideth_biao=40;//src_biao.getWidth(null);intheight_biao=40;//src_biao.getHeight(null);tag.getGraphics().drawImage(src_biao,50,50,wideth_biao,height_biao,null);*/}catch(Exceptione){e.printStackTrace();}if(!temp.trim().equals(desc))_file.deleteOnExit();

if(desc.toLowerCase().trim().endsWith(“gif”)){System.out.println(“thetypeisgif!”);AnimatedGifEncodere=newAnimatedGifEncoder();e.start(desc);e.addFrame(tag);e.finish();}elseif(desc.toLowerCase().trim().endsWith(“tif”)||desc.toLowerCase().trim().endsWith(“tiff”)){System.out.println(“thetypeistif!”);this.toTIF(tag,desc);}else{try{System.out.println(“commontype!”);JimiWriterwriter=Jimi.createJimiWriter(desc);writer.setSource(tag);writer.putImage(desc);}catch(Exceptionex){ex.printStackTrace();}}}publicvoidtranspic(Stringinfile,intiWideth,intiHeight,Stringtype)throwsJimiException,IOException{Stringtemp=infile;File_file=null;/*if(outfile==null||outfile.trim().equals(“”))outfile=infile;if(!outfile.toLowerCase().trim().endsWith(“jpg”)){temp=outfile.trim()+”.jpg”;}*/ConvertUtilcu=newConvertUtil();if(!cu.getFiletype(infile).equals(“jpg”)){this.toJPG(infile,temp,75);}_file=newFile(temp);//读入文件

Imagesrc=javax.imageio.ImageIO.read(_file);//构造Image对象doublewideth=(double)src.getWidth(null);//得到源图宽doubleheight=(double)src.getHeight(null);//得到源图长System.out.println(“源图宽:”+wideth);System.out.println(“源图长:”+height);/*//缩放处理intiWideth=(int)(wideth*ins);intiHeight=(int)(height*ins);*///intiWideth=300;//intiHeight=200;System.out.println(“现图宽:”+iWideth);System.out.println(“现图长:”+iHeight);Stringoutfile=””;BufferedImagetag=null;try{tag=newBufferedImage(iWideth,iHeight,BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(src,0,0,iWideth,iHeight,null);//绘制缩小后的图/*//打水印File_filebiao=newFile(“test2.jpg”);Imagesrc_biao=ImageIO.read(_filebiao);intwideth_biao=40;//src_biao.getWidth(null);intheight_biao=40;//src_biao.getHeight(null);tag.getGraphics().drawImage(src_biao,50,50,wideth_biao,height_biao,null);*/}catch(Exceptione){e.printStackTrace();}if(!temp.trim().equals(outfile))_file.deleteOnExit();

if(outfile.toLowerCase().trim().endsWith(“gif”)){System.out.println(“thetypeisgif!”);AnimatedGifEncodere=newAnimatedGifEncoder();e.start(outfile);e.addFrame(tag);e.finish();}elseif(outfile.toLowerCase().trim().endsWith(“tif”)||outfile.toLowerCase().trim().endsWith(“tiff”)){System.out.println(“thetypeistif!”);this.toTIF(tag,outfile);}else{try{System.out.println(“commontype!”);JimiWriterwriter=Jimi.createJimiWriter(outfile);writer.setSource(tag);writer.putImage(outfile);}catch(Exceptionex){ex.printStackTrace();}}}publicstaticvoidmain(String[]args){Stringdest=”test.jpg”;Stringsource=”test.gif”;intquality=100;doubleins=4;TransferPicturetp=newTransferPicture();try{System.out.println(“beforechange”);System.out.println(“——————-“);//tp.toJPG(source,dest,quality);//tp.toGIF(source,dest);tp.changeDimension(source,dest,ins);System.out.println(“——————-“);System.out.println(“endchange”);}catch(Exceptione){e.printStackTrace();}}

}

十年干戈天地老,四海苍生痛苦深。

绝对经典Java开源工具Jimi处理图片大小及格式转换及打水印(源码

相关文章:

你感兴趣的文章:

标签云: