欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)自動(dòng)生成縮略圖片

 更新時(shí)間:2022年04月22日 15:17:04   作者:憤怒的火柴  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)自動(dòng)生成縮略圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)自動(dòng)生成縮略圖片的具體代碼,供大家參考,具體內(nèi)容如下

一、自動(dòng)生成縮略圖方法:

package writeimg;
?
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
?
public class JpegTool {?
? ? ? ? private boolean isInitFlag = false; // ? ? ? ? 對象是否己經(jīng)初始化?
? ? ? ? private String pic_big_pathfilename = null; //定義源圖片所在的帶路徑目錄的文件名
? ? ? ? private String pic_small_pathfilename = null; // 生成小圖片的帶存放路徑目錄的文件名?
? ? ? ? private int smallpicwidth = 0; //定義生成小圖片的寬度和高度,給其一個(gè)就可以了?
? ? ? ? private int smallpicheight = 0;?
? ? ? ? private int pic_big_width=0;
? ? ? ? private int pic_big_height=0;
? ? ? ? private double picscale = 0; //定義小圖片的相比原圖片的比例?
? ? ? ? /**?
? ? ? ? * 構(gòu)造函數(shù)?
? ? ? ? * @param 沒有參數(shù)?
? ? ? ? */?
? ? ? ? public JpegTool(){
? ? ? ? ? ? ? ? this.isInitFlag = false;?
? ? ? ? }?
? ? ? ? /**?
? ? ? ? * 私有函數(shù),重置所有的參數(shù)?
? ? ? ? * @param 沒有參數(shù)?
? ? ? ? * @return 沒有返回參數(shù)?
? ? ? ? */?
? ? ? ? private void resetJpegToolParams(){?
? ? ? ? ? ? ? ? this.picscale = 0;?
? ? ? ? ? ? ? ? this.smallpicwidth = 0;?
? ? ? ? ? ? ? ? this.smallpicheight = 0;?
? ? ? ? ? ? ? ? this.isInitFlag = false;?
? ? ? ? }?
? ? ? ? /**?
? ? ? ? * @param scale 設(shè)置縮影圖像相對于源圖像的大小比例如 0.5?
? ? ? ? * @throws JpegToolException?
? ? ? ? */?
? ? ? ? public void SetScale(double scale) throws JpegToolException
? ? ? ? {?
? ? ? ? ? ? ? ? if(scale<=0){?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 縮放比例不能為 0 和負(fù)數(shù)! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? this.resetJpegToolParams();?
? ? ? ? ? ? ? ? this.picscale = scale;?
? ? ? ? ? ? ? ? this.isInitFlag = true;?
? ? ? ? }?
? ? ? ? /**?
? ? ? ? * @param smallpicwidth 設(shè)置縮影圖像的寬度?
? ? ? ? * @throws JpegToolException?
? ? ? ? */?
? ? ? ? public void SetSmallWidth(int smallpicwidth) throws JpegToolException?
? ? ? ? {?
? ? ? ? ? ? ? ? if(smallpicwidth<=0)
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 縮影圖片的寬度不能為 0 和負(fù)數(shù)! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? this.resetJpegToolParams();?
? ? ? ? ? ? ? ? this.smallpicwidth = smallpicwidth;?
? ? ? ? ? ? ? ? this.isInitFlag = true;?
? ? ? ? }?
?
? ? ? ? /**?
? ? ? ? * @param smallpicheight 設(shè)置縮影圖像的高度?
? ? ? ? * @throws JpegToolException?
? ? ? ? */?
?
? ? ? ? public void SetSmallHeight(int smallpicheight) throws JpegToolException {?
? ? ? ? ? ? ? ? if(smallpicheight<=0)
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ?throw new JpegToolException(" 縮影圖片的高度不能為 0 和負(fù)數(shù)! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? this.resetJpegToolParams();?
? ? ? ? ? ? ? ? this.smallpicheight = smallpicheight;?
? ? ? ? ? ? ? ? this.isInitFlag = true;?
? ? ? ? }?
? ? ? ??
? ? ? ? /**
? ? ? ? ?*返回大圖片路徑?
? ? ? ? ?*/
? ? ? ? public String getpic_big_pathfilename()
? ? ? ? {
? ? ? ? ? ? ? ? return this.pic_big_pathfilename;
? ? ? ? }
? ? ? ? /**
? ? ? ? ?* 返回小圖片路徑
? ? ? ? ?*/
? ? ? ? public String getpic_small_pathfilename()
? ? ? ? {
? ? ? ? ? ? ? ? return this.pic_small_pathfilename;
? ? ? ? }
? ? ? ??
? ? ? ? public int getsrcw()
? ? ? ? {
? ? ? ? ? ? ? ? return this.pic_big_width;
? ? ? ? }
? ? ? ? public int getsrch()
? ? ? ? {
? ? ? ? ? ? ? ? return this.pic_big_height;
? ? ? ? }
? ? ? ? /**?
? ? ? ? * 生成源圖像的縮影圖像?
? ? ? ? * @param pic_big_pathfilename 源圖像文件名,包含路徑(如 windows 下 C:\\pic.jpg ; Linux 下 /home/abner/pic/pic.jpg )?
? ? ? ? * @param pic_small_pathfilename 生成的縮影圖像文件名,包含路徑(如 windows 下 C:\\pic_small.jpg ; Linux 下 /home/abner/pic/pic_small.jpg )?
? ? ? ? * @throws JpegToolException?
? ? ? ? */?
? ? ? ? public void doFinal(String pic_big_pathfilename,String pic_small_pathfilename) throws JpegToolException {?
? ? ? ? ? ? ? ? if(!this.isInitFlag){?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 對象參數(shù)沒有初始化! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? if(pic_big_pathfilename==null || pic_small_pathfilename==null){?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 包含文件名的路徑為空! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? if((!pic_big_pathfilename.toLowerCase().endsWith("jpg")) && (!pic_big_pathfilename.toLowerCase().endsWith("jpeg"))){?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 只能處理 JPG/JPEG 文件! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? if((!pic_small_pathfilename.toLowerCase().endsWith("jpg")) && !pic_small_pathfilename.toLowerCase().endsWith("jpeg")){?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 只能處理 JPG/JPEG 文件! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? this.pic_big_pathfilename=pic_big_pathfilename;
? ? ? ? ? ? ? ? this.pic_small_pathfilename=pic_small_pathfilename;
? ? ? ? ? ? ? ? int smallw = 0;?
? ? ? ? ? ? ? ? int smallh = 0;?
? ? ? ? ? ? ? ? // 新建源圖片和生成的小圖片的文件對象?
? ? ? ? ? ? ? ? File fi = new File(pic_big_pathfilename);?
? ? ? ? ? ? ? ? File fo = new File(pic_small_pathfilename);?
? ? ? ? ? ? ? ? //生成圖像變換對象?
? ? ? ? ? ? ? ? AffineTransform transform = new AffineTransform();?
? ? ? ? ? ? ? ? //通過緩沖讀入源圖片文件?
? ? ? ? ? ? ? ? BufferedImage bsrc = null;?
? ? ? ? ? ? ? ? try {?
? ? ? ? ? ? ? ? bsrc = ImageIO.read(fi);?
? ? ? ? ? ? ? ? }catch (IOException ex) {?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 讀取源圖像文件出錯(cuò)! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? this.pic_big_width= bsrc.getWidth();// 原圖像的長度?
? ? ? ? ? ? ? ? this.pic_big_height = bsrc.getHeight();// 原圖像的寬度?
? ? ? ? ? ? ? ? double scale = (double)pic_big_width/pic_big_height;// 圖像的長寬比例?
? ? ? ? ? ? ? ? if(this.smallpicwidth!=0)
? ? ? ? ? ? ? ? {// 根據(jù)設(shè)定的寬度求出長度?
? ? ? ? ? ? ? ? ? ? ? ? smallw = this.smallpicwidth;// 新生成的縮略圖像的長度?
? ? ? ? ? ? ? ? ? ? ? ? smallh = (smallw*pic_big_height)/pic_big_width ;// 新生成的縮略圖像的寬度?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(this.smallpicheight!=0)
? ? ? ? ? ? ? ? {// 根據(jù)設(shè)定的長度求出寬度?
? ? ? ? ? ? ? ? ? ? ? ? smallh = this.smallpicheight;// 新生成的縮略圖像的長度?
? ? ? ? ? ? ? ? ? ? ? ? smallw = (smallh*pic_big_width)/pic_big_height;// 新生成的縮略圖像的寬度?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(this.picscale!=0)
? ? ? ? ? ? ? ? {// 根據(jù)設(shè)置的縮小比例設(shè)置圖像的長和寬?
? ? ? ? ? ? ? ? ? ? ? ? smallw = (int)((float)pic_big_width*this.picscale);?
? ? ? ? ? ? ? ? ? ? ? ? smallh = (int)((float)pic_big_height*this.picscale);?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ? throw new JpegToolException(" 對象參數(shù)初始化不正確! ");?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? double sx = (double)smallw/pic_big_width;//小/大圖像的寬度比例?
? ? ? ? ? ? ? ? double sy = (double)smallh/pic_big_height;//小/大圖像的高度比例?
? ? ? ? ? ? ? ? transform.setToScale(sx,sy);// 設(shè)置圖像轉(zhuǎn)換的比例?
? ? ? ? ? ? ? ? //生成圖像轉(zhuǎn)換操作對象?
? ? ? ? ? ? ? ? AffineTransformOp ato = new AffineTransformOp(transform,null);?
? ? ? ? ? ? ? ? //生成縮小圖像的緩沖對象?
? ? ? ? ? ? ? ? BufferedImage bsmall = new BufferedImage(smallw,smallh,BufferedImage.TYPE_3BYTE_BGR);?
? ? ? ? ? ? ? ? //生成小圖像?
? ? ? ? ? ? ? ? ato.filter(bsrc,bsmall);?
? ? ? ? ? ? ? ? //輸出小圖像?
? ? ? ? ? ? ? ? try{
? ? ? ? ? ? ? ? ? ? ? ? ImageIO.write(bsmall, "jpeg", fo);?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? catch (IOException ex1)?
? ? ? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ?throw new JpegToolException(" 寫入縮略圖像文件出錯(cuò)! ");?
? ? ? ? ? ? ? ? }?
? ? ? ? }
}

二、異常處理類:

package jpegtool;
?
? ? public class JpegToolException extends Exception {
? ? ? ? ? ? private String errMsg = "";?
? ? ? ? ? ? public JpegToolException(String errMsg)?
? ? ? ? ? ? {?
? ? ? ? ? ? ? ? ? ? this.errMsg = errMsg;?
? ? ? ? ? ? }?
?
? ? ? ? ? ? public String getMsg(){?
? ? ? ? ? ? ? ? return "JpegToolException:"+this.errMsg;?
? ? ? ? ? ? }?
? ? }

三、調(diào)用的例子:

package writeimg;
?
public class T {
?
?
?? ?public static void main(String[] args) {
?
?? ??? ?JpegTool j = new JpegTool();
?? ??? ?try {
?? ??? ??? ?j.SetScale(0.7);
?? ??? ??? ?j.SetSmallHeight(100);
?? ??? ??? ?j.doFinal("D:\\305\\c\\javatest\\src\\11.jpg","D:\\305\\c\\javatest\\src\\22.jpg");
?? ??? ?} catch (JpegToolException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}
?
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論