java 圖片處理

java處理圖片java

// 獲取原始圖片流
BufferedImage originalBI = ImageIO.read(new File("D://in.jpg"));

// 獲取原始圖片寬高
int originalWidth = originalBI.getWidth();
int originalHeight = originalBI.getHeight();

// 設置縮放圖片寬高
int scaledWidth = originalWidth * 2;
int scaledHeigth = originalHeight * 2;
// int scaledWidth = originalWidth / 2;
// int scaledHeigth = originalHeight / 2;

// 設置縮放圖片流
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeigth, BufferedImage.TYPE_INT_RGB);

// 設置縮放圖片畫筆
Graphics2D g = scaledBI.createGraphics();
g.setComposite(AlphaComposite.Src);

// 繪製縮放圖片
g.drawImage(originalBI, 0, 0, scaledWidth, scaledHeigth, null);
g.dispose();

// 輸出縮放圖片
ImageIO.write(scaledBI, "jpg", new FileOutputStream(new File("D://out.jpg")));

thumbnailator處理圖片(壓縮、裁切、旋轉、添加水印)ui

/*
 * java工程圖片壓縮 添加thumbnailator-0.4.7.jar(Build Path --> Add to Build Path)
 * thumbnailator 是一個用來生成圖像縮略圖、裁切、旋轉、添加水印等操做的 Java 類庫
 */

// 原圖
String originalImage = "images/image.jpg";

/*
 * 指定大小(默認按比例)進行縮放
 * size(width,height)
 * 若圖片橫比200小,高比300小,不變
 * 若圖片橫比200小,高比300大,高縮小到300,圖片比例不變 
 * 若圖片橫比200大,高比300小,橫縮小到200,圖片比例不變
 * 若圖片橫比200大,高比300大,圖片按比例縮小,橫爲200或高爲300
 */
Thumbnails.of(originalImage).size(200, 300).toFile("images/image_200x300.jpg");

/*
 * 不按照比例,指定大小進行縮放 
 * keepAspectRatio(false)
 */
Thumbnails.of(originalImage).size(200, 300).keepAspectRatio(false).toFile("images/image_200x300_fixed.jpg");

/*
 * 按照比例進行縮放
 * scale(比例)
 */
Thumbnails.of(originalImage).scale(0.5f).toFile("images/image_50%.jpg");
Thumbnails.of(originalImage).scale(1.5f).toFile("images/image_150%.jpg");

/*
 * 旋轉
 * rotate(角度),正數:順時針 負數:逆時針
 */
Thumbnails.of(originalImage).size(200, 300).rotate(90).toFile("images/image_200x300_+90.jpg");
Thumbnails.of(originalImage).scale(1.0f).rotate(-90).toFile("images/image_-90.jpg");

/*
 * 水印
 * watermark(位置,水印圖,透明度)
 * outputQuality(比例)合成圖片按比例質量輸出
 */
BufferedImage waterImage = ImageIO.read(new File("images/watermark.jpg"));

Thumbnails.of(originalImage).scale(1.0f).watermark(Positions.CENTER, waterImage, 0.5f).outputQuality(1.0f)
        .toFile("images/image_watermark_center.jpg");

/*
 * 裁剪
 * sourceRegion(位置,長,寬) 
 * sourceRegion(起始x座標, 起始y座標,長,寬)
 */
Thumbnails.of(originalImage).sourceRegion(Positions.TOP_LEFT, 400, 400).scale(1.0f)
        .toFile("images/image_region_top_left.jpg");

Thumbnails.of(originalImage).sourceRegion(0, 0, 400, 400).size(200, 300).keepAspectRatio(true)
        .toFile("images/image_region_0x0.jpg");

/*
 * 指定輸出格式
 * outputFormat(圖像格式)
 */
Thumbnails.of(originalImage).size(200, 300).outputFormat("png").toFile("images/image_200x300.png");

/*
 * 輸出到OutputStream 
 * toOutputStream(流對象)
 */
OutputStream os = new FileOutputStream("images/image_200x300_OutputStream.png");
Thumbnails.of(originalImage).size(200, 300).toOutputStream(os);

/*
 * 輸出到BufferedImage 
 * asBufferedImage()
 */
BufferedImage bf = Thumbnails.of(originalImage).size(200, 300).asBufferedImage();
ImageIO.write(bf, "jpg", new File("images/image_200x300_BufferedImage.jpg"));
相關文章
相關標籤/搜索