Java實現的不同圖片居中剪裁生成同一尺寸縮略圖功能示例
本文實例講述了Java實現的不同圖片居中剪裁生成同一尺寸縮略圖功能。分享給大家供大家參考,具體如下:
因為業(yè)務需要,寫了這樣一個簡單類,希望能幫助對有這方面需要的人,高手莫笑
源碼如下:
package platform.edu.resource.utils;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 圖片工具類
* @author hjn
* @version 1.0 2013-11-26
*
*/
public class ImageUtil {
/**
* 圖片等比縮放居中剪裁
* 不管尺寸不等的圖片生成的縮略圖都是同一尺寸,方便用于頁面展示
* @param imageSrc圖片所在路徑
* @param thumbWidth縮略圖寬度
* @param thumbHeight縮略圖長度
* @param outFilePath縮略圖存放路徑
* @throws InterruptedException
* @throws IOException
*/
public static void createImgThumbnail(String imgSrc, int thumbWidth, int thumbHeight, String outFilePath) throws InterruptedException, IOException {
File imageFile=new File(imgSrc);
BufferedImage image = ImageIO.read(imageFile);
Integer width = image.getWidth();
Integer height = image.getHeight();
double i = (double) width / (double) height;
double j = (double) thumbWidth / (double) thumbHeight;
int[] d = new int[2];
int x = 0;
int y = 0;
if (i > j) {
d[1] = thumbHeight;
d[0] = (int) (thumbHeight * i);
y = 0;
x = (d[0] - thumbWidth) / 2;
} else {
d[0] = thumbWidth;
d[1] = (int) (thumbWidth / i);
x = 0;
y = (d[1] - thumbHeight) / 2;
}
File outFile = new File(outFilePath);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
/*等比例縮放*/
BufferedImage newImage = new BufferedImage(d[0],d[1],image.getType());
Graphics g = newImage.getGraphics();
g.drawImage(image, 0,0,d[0],d[1],null);
g.dispose();
/*居中剪裁*/
newImage = newImage.getSubimage(x, y, thumbWidth, thumbHeight);
ImageIO.write(newImage, imageFile.getName().substring(imageFile.getName().lastIndexOf(".") + 1), outFile);
}
}
PS:這里再為大家推薦幾款比較實用的圖片處理工具供大家參考使用:
在線圖片轉換BASE64工具:
http://tools.jb51.net/transcoding/img2base64
ICO圖標在線生成工具:
http://tools.jb51.net/aideddesign/ico_img
在線Email郵箱圖標制作工具:
http://tools.jb51.net/email/emaillogo
在線圖片格式轉換(jpg/bmp/gif/png)工具:
http://tools.jb51.net/aideddesign/picext
更多java相關內容感興趣的讀者可查看本站專題:《Java圖片操作技巧匯總》、《java日期與時間操作技巧匯總》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》及《Java數據結構與算法教程》。
希望本文所述對大家java程序設計有所幫助。

