【需求】
在桌面上有若干png图片,是使用截图软件FSCapture7.6对通达信的K线图截图而得,在打印这些K线图前,需要将它们进行反色处理。
【代码】
package test240313;
import java.awt.image.BufferedImage;
import java.awt.image.ByteLookupTable;
import java.awt.image.LookupOp;
import java.io.File;
import javax.imageio.ImageIO;
/**
* 将指定路径下所有的png文件进行反色处理
* @author ufo
*
*/
public class InverseAllPngs {
public static void main(String[] args) throws Exception{
// 预先准备256个颜色梯度的反向表
byte reverse[] = new byte[256];
for (int i = 0; i < 256; i++) {
reverse[i] = (byte) (255 - i);
}
// 获得指定路径下的所有png文件
File folder=new File("C:\\Users\\ufo\\Desktop\\");
File[] files=folder.listFiles();
for(File f:files) {
if(f.isFile()) {
String fname=f.getPath();
if(fname.toLowerCase().endsWith(".png")) {
// 读原文件
BufferedImage img = ImageIO.read(f);
// 得到反色后的图像
BufferedImage inversedImg = inverseColor(img,reverse);
// 写入原文件
File outFile = new File(fname);
ImageIO.write(inversedImg, "png", outFile);
}
}
}
}
/**
* 返回反色处理后的新图像
* @param image
* @return
*/
private static BufferedImage inverseColor(BufferedImage image,byte[] reverse) {
ByteLookupTable blut = new ByteLookupTable(0, reverse);
BufferedImage bimg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
LookupOp lop = new LookupOp(blut, null);
lop.filter(image, bimg);
return bimg;
}
}
【参考资料】
java将图片变灰、去噪、反色_java如何设置图片同一灰度明暗度-CSDN博客
END