【需求】
在桌面上有若干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将图片变灰、去噪、反色_java如何设置图片同一灰度明暗度-CSDN博客
END