练习需求:
1、给定指定的图片,往图片里添加上滤镜
练习分析:
1、java给图片添加滤镜使用到第三方的 Filters 包,官网:http://jhlabs.com/ip/filters/index.html
2、需要有一定的处理文件基础
示例代码
package com.zcl.imagefilter;
import com.jhlabs.image.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws Exception {
Demo d = new Demo();
d.addImageFilter(new File("F:\2022C4java认证\day15 FileDemo\code\file-app\1.jpg"),new File("图片2.png"),new DitherFilter());
}
public void addImageFilter(File sourceFile, File dedImageFile, PointFilter pointFilter) throws Exception {
BufferedImage sourceimage = ImageIO.read(sourceFile);
Image scaledInstance = sourceimage.getScaledInstance(sourceimage.getWidth(), sourceimage.getHeight(), Image.SCALE_DEFAULT);
// 输出的位置
BufferedImage bufferedImage = new BufferedImage(sourceimage.getWidth(),sourceimage.getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics graphics = bufferedImage.getGraphics();
// 将原有的内容添加到新的bufferedImage里面
boolean b = graphics.drawImage(scaledInstance, 0, 0, null);
graphics.dispose();
// 原图像和目标图像
pointFilter.filter(sourceimage,bufferedImage);
ImageIO.write(bufferedImage,"png",dedImageFile);
}
}
滤镜类的名称
因为上面是使用了PointFilter来接收滤镜,所以传递的类型必须要正确,如果传递了不是基础滤镜的类就会报错



