【java/image】将指定路径下所有的png图片进行反色处理

【需求】

在桌面上有若干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{
        // 获得指定路径下的所有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);

                    // 写入原文件
                    File outFile = new File(fname);
                    ImageIO.write(inversedImg, "png", outFile);
                }
            }
        }
    }
    
    /**
     * 返回反色处理后的新图像
     * @param image
     * @return
     */
    private static BufferedImage inverseColor(BufferedImage image) {
        byte reverse[] = new byte[256];
        for (int j = 0; j < 256; j++) {
            reverse[j] = (byte) (255 - j);
        }

        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;
    }
}
复制代码

【参考资料】

https://www.jianshu.com/p/6b2bbf95aee0

https://blog.csdn.net/pengxiaozhong/article/details/125910853

END

posted @   逆火狂飙  阅读(321)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示