可實現以下常用功能:縮放圖像、切割圖像、圖像類型轉換、彩色轉黑白、文字水印、圖片水印等
代碼如下 復制代碼
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 圖片處理工具類:<br>
* 功能:縮放圖像、切割圖像、圖像類型轉換、彩色轉黑白、文字水印、圖片水印等
* @author Administrator
*/
public class ImageUtils {
/**
* 幾種常見的圖片格式
*/
public static String IMAGE_TYPE_GIF = "gif";// 圖形交換格式
public static String IMAGE_TYPE_JPG = "jpg";// 聯合照片專家組
public static String IMAGE_TYPE_JPEG = "jpeg";// 聯合照片專家組
public static String IMAGE_TYPE_BMP = "bmp";// 英文Bitmap(位圖)的簡寫,它是Windows操作系統中的標准圖像文件格式
public static String IMAGE_TYPE_PNG = "png";// 可移植網絡圖形
public static String IMAGE_TYPE_PSD = "psd";// Photoshop的專用格式Photoshop
/**
* 程序入口:用於測試
* @param args
*/
public static void main(String[] args) {
// 1-縮放圖像:
// 方法一:按比例縮放
ImageUtils.scale("e:/abc.jpg", "e:/abc_scale.jpg", 2, true);//測試OK
// 方法二:按高度和寬度縮放
ImageUtils.scale2("e:/abc.jpg", "e:/abc_scale2.jpg", 500, 300, true);//測試OK
// 2-切割圖像:
// 方法一:按指定起點坐標和寬高切割
ImageUtils.cut("e:/abc.jpg", "e:/abc_cut.jpg", 0, 0, 400, 400 );//測試OK
// 方法二:指定切片的行數和列數
ImageUtils.cut2("e:/abc.jpg", "e:/", 2, 2 );//測試OK
// 方法三:指定切片的寬度和高度
ImageUtils.cut3("e:/abc.jpg", "e:/", 300, 300 );//測試OK
// 3-圖像類型轉換:
ImageUtils.convert("e:/abc.jpg", "GIF", "e:/abc_convert.gif");//測試OK
// 4-彩色轉黑白:
ImageUtils.gray("e:/abc.jpg", "e:/abc_gray.jpg");//測試OK
// 5-給圖片添加文字水印:
// 方法一:
ImageUtils.pressText("我是水印文字","e:/abc.jpg","e:/abc_pressText.jpg","宋體",Font.BOLD,Color.white,80, 0, 0, 0.5f);//測試OK
// 方法二:
ImageUtils.pressText2("我也是水印文字", "e:/abc.jpg","e:/abc_pressText2.jpg", "黑體", 36, Color.white, 80, 0, 0, 0.5f);//測試OK
// 6-給圖片添加圖片水印:
ImageUtils.pressImage("e:/abc2.jpg", "e:/abc.jpg","e:/abc_pressImage.jpg", 0, 0, 0.5f);//測試OK
}
/**
* 縮放圖像(按比例縮放)
* @param srcImageFile 源圖像文件地址
* @param result 縮放後的圖像地址
* @param scale 縮放比例
* @param flag 縮放選擇:true 放大; false 縮小;
*/
public final static void scale(String srcImageFile, String result,
int scale, boolean flag) {
try {
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 讀入文件
int width = src.getWidth(); // 得到源圖寬
int height = src.getHeight(); // 得到源圖長
if (flag) {// 放大
width = width * scale;
height = height * scale;
} else {// 縮小
width = width / scale;
height = height / scale;
}
Image image = src.getScaledInstance(width, height,
Image.SCALE_DEFAULT);
BufferedImage tag = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 繪制縮小後的圖
g.dispose();
ImageIO.write(tag, "JPEG", new File(result));// 輸出到文件流
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 縮放圖像(按高度和寬度縮放)
* @param srcImageFile 源圖像文件地址
* @param result 縮放後的圖像地址
* @param height 縮放後的高度
* @param w