【Java/Image】给指定路径下图片反色并加上当前日期形式的水印

【需求】

从通达信软件截屏下来的K线图,在打印前需要反色,打印后需要手动加上当前日期,这些都可以由程序代替手工完成。

以下是期待的效果。

 【关键点】

给图片反色用的是梯度法,这个在网络上已有成型代码;

给图片加水印是取BufferedImage的graphics,然后在上面操作,这个对熟悉graphics的同学自然构不成障碍。

【代码】

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.ByteLookupTable;
import java.awt.image.LookupOp;
import java.io.File;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;import javax.imageio.ImageIO;/*** 将指定路径下所有的png文件进行反色处理并加上日期水印* @author ufo**/
public class InversePngAddMark {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);}// 当前日期String currDate=getDate();// 获得指定路径下的所有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);// 使用graphics对图像进行加水印操作Graphics2D graphics = (Graphics2D) inversedImg.getGraphics();Font font = new Font("Arial", Font.ITALIC, 24);graphics.setFont(font);graphics.setColor(Color.RED);int offsetX=160,offsetY=20;// 文字离右下角偏置距离,这个自行调整graphics.drawString(currDate, inversedImg.getWidth()-offsetX, inversedImg.getHeight()-offsetY);// 写入原文件File outFile = new File(fname);ImageIO.write(inversedImg, "png", outFile);}}}}/*** 得到字符串形式的当前日期* @return*/private static String getDate() {LocalDate today=LocalDate.now();DateTimeFormatter format1=DateTimeFormatter.ofPattern("yy.MM.dd");return today.format(format1);}/*** 返回反色处理后的新图像* @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;}
}

【处理前图片】

【处理后图片】

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【考研学子必看 ★2024考研国家线及调剂策略(3)】

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

C++结合opencv—图像2维直方图初次尝试

// 二维直方图 void QuickDemo::two_histogram_demo(Mat &image) {Mat hsv, hs_hist;cvtColor(image, hsv, COLOR_BGR2HSV);int hbins 30, sbins 32;int hisat_bins[] { hbins,sbins };float h_range[] { 0,180 }; //180/306float s_range[] { 0,256 };// 256/328cons…

javaweb篇请求与相应的参数问题

目录 前言 简单传参设置 get请求无法识别 post请求 简单传参问题无法识别的解决问题 注意事项 改法 实体参数 代码展示 今日分享 前言 友友们&#xff0c;大家好&#xff0c;今天来开荒了,今天介绍的是在进行数据请求以及相应的时候&#xff0c;我们不仅仅只是进入一…

LED基础知识分享(三)

大家好&#xff0c;我是砖一。 一&#xff0c;LED的光衰与使用环境温度 什么叫LED光衰 光衰是指LED经过一段时间的点亮后,其光强会比原来的光强要低,而低了的部分就是LED的光衰。 一般LED封装厂家做测试是在实验室的条件下(25℃的常温下),以20MA的直流电连续点亮LED1000小时…

学习SSM的记录(六)-- Spring MVC

目录 Spring MVC 简介和体验 Spring MVC原理简单解析 Spring MVC涉及的组件 Spring MVC 快速体验 Spring MVC 接收数据 访问路径设置 接收参数&#xff08;重点&#xff09; param和json参数比较 param参数接收 路径参数接收 json参数接收 EnableWebMvc注解 接收C…

KEIL5新建第一个文件教程

1.进入keil5主页面点击project创建新工程。 2.先确定存放工程的地址然后创建双重文件目录&#xff0c;以便存放更多的文件代码实例。 3.寻找存放工程文件的位置&#xff0c;输入新工程文件名。 4.寻找对应项目的芯片。 4.这里选择。 5.创建新的文本点击保存。 6.添加刚刚创建的…

k8s关于pod

目录 1、POD 的创建流程 kubectl 发起创建 Pod 请求&#xff1a; API Server 接收请求并处理&#xff1a; 写入 Etcd 数据库&#xff1a; Kubelet 监听并创建 Pod&#xff1a; Pod 状态更新和汇报&#xff1a; 2、POD 的状态解析 1. Pending Pod 2. Running Pod 3. S…

RabbitMQ备份交换机与优先级队列

1. 备份交换机 备份交换机可以理解为 RabbitMQ 中交换机的“备胎”&#xff0c;当我们为某一个交换机声明一个对应的备份交换机时&#xff0c;就是为它创建一个备胎&#xff0c;当交换机接收到一条不可路由消息时&#xff0c;将会把这条消息转发到备份交换机中&#xff0c;由备…

【掌握版本控制:Git 入门与实践指南】远程操作|标签管理

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;泥中に咲く—ウォルピスカーター 0:34━━━━━━️&#x1f49f;──────── 4:46 &#x1f504; ◀️ ⏸ ▶…

MySQL的索引(优缺点,二叉树,红黑数,B+Tree)【详解】

1.什么是索引 索引&#xff1a;是用于提高查询数据性能的一种数据结构。实际开发中&#xff0c;对数据的读写操作大概是10&#xff1a;1 把索引理解为目录。 构建索引的过程&#xff0c;就是构建目录的过程 构建索引的过程中会对数据进行排序 2.索引的优缺点 优点&#x…

决策树 | 分类树回归树:算法逻辑

目录 一. 决策树(Decision Tree)1. 决策树的构建1.1 信息熵(Entropy)1.1.1 信息量&信息熵 定义1.1.2 高信息熵&低信息熵 定义1.1.3 信息熵 公式 1.2 信息增益(Information Gain)1.2.1 信息增益的计算1.2.2 小节 2. 小节2.1 算法分类2.2 决策树算法分割选择2.3 决策树算…

C# WPF编程-概述

C# WPF编程-基础知识 概述WPF高级API硬件加速与WPF分辨率无关性WPF体系结构WPF的主要类WPF工具包Visual Studio IDE 概述 WPF(Windows Presentation Foundation)是用于Windows的现代图形显示系统。引入了“内置硬件加速”和“分辨率无关”等创新功能。 WPF高级API 类似Web的…