萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> jsp編程 >> java圖片處理類(圖片水印,圖片縮放)

java圖片處理類(圖片水印,圖片縮放)

可實現以下常用功能:縮放圖像、切割圖像、圖像類型轉換、彩色轉黑白、文字水印、圖片水印等

 代碼如下 復制代碼
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

copyright © 萬盛學電腦網 all rights reserved