Java-图片处理
一、前言
- 操作系统:Windows 7 Ultimate
- JDK版本:
1.8
- 开发工具:IntelliJ IDEA
imageio(github):https://github.com/jai-imageio/jai-imageio-core
thumbnailator(github):https://github.com/coobird/thumbnailator
二、正文
1.图片格式转换
场景说明:将 .tif
转为 .png
- 添加依赖
<!-- https://mvnrepository.com/artifact/com.github.jai-imageio/jai-imageio-core -->
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
- 示例代码
package com.demo.imageio;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageIODemo {
public static void main(String[] args) {
String originPath = "E://123.tif";
String targetPath = "E://123t.png";
try {
BufferedImage bufferedImage = ImageIO.read(new File(originPath));
ImageIO.write(bufferedImage, "png", new File(targetPath));
System.out.println("图片转换完成.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.图片压缩
BufferedImage(Class):https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html
- 添加依赖
<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.13</version>
</dependency>
- 示例代码
- 简单例子
Thumbnails.of(new File("c://original.jpg"))
.size(200, 100)
.toFile(new File("c://thumbnail.jpg"));
- 批量文件(指定文件夹)
Thumbnails.of(new File("c://directory")
.listFiles())
.size(640, 480)
.outputFormat("jpg")
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
- 添加水印,水印旋转90度,放在右下角,透明度 20%,原图 60% 的质量输出
Thumbnails.of(new File("c://original.jpg"))
.size(200, 100)
.rotate(90)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("c://watermark.jpg")), 0.2f)
.outputQuality(0.6f)
.toFile(new File("c://image-output.jpg"));
- 按比例设置长宽,原图 10% 的长宽比例
Thumbnails.of(ImageIO.read(new File("c://original.jpg")))
.scale(0.10f)
.toFile(new File("c://image-thumbnail.png"));
- 转换为 BufferedImage
BufferedImage thumbnail = Thumbnails.of(ImageIO.read(new File("c://original.jpg")))
.scale(0.10f)
.asBufferedImage();