java实现图片反色处理示例
作者:洛阳泰山 发布时间:2022-07-09 20:53:34
标签:java,图片反色
本文实例为大家分享了java实现图片反色处理的具体代码,供大家参考,具体内容如下
效果对比
原图
反色处理
原图
反色处理
核心代码实现
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
public class ImageColor {
/**
* @Description: 反色
* @param imgPath 图片路径
* @param fileUrl 输出图片路径
* @throws
*/
public static void inverse(String imgPath, String fileUrl){
try {
FileInputStream fileInputStream = new FileInputStream(imgPath);
BufferedImage image = ImageIO.read(fileInputStream);
//生成字符图片
int w = image.getWidth();
int h = image.getHeight();
BufferedImage imageBuffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);;
// 绘制字符
for (int y = 0; y < h; y++) {
for (int x = 0; x< w; x++) {
int rgb = image.getRGB(x, y);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0x00ff00) >> 8;
int B = rgb & 0x0000ff;
int newPixel=colorToRGB(255-R,255-G,255-B);
imageBuffer.setRGB(x,y,newPixel);
}
}
ImageIO.write(imageBuffer, "png", new File(fileUrl)); //输出图片
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @Description: 颜色转rgb值
* @throws
*/
public static int colorToRGB(int red,int green,int blue){
int newPixel=0;
newPixel=newPixel << 8;
newPixel+=red;
newPixel=newPixel << 8;
newPixel+=green;
newPixel=newPixel << 8;
newPixel+=blue;
return newPixel;
}
public static void main(String[] args) throws IOException {
inverse("C:\\Users\\liuya\\Desktop\\laoying.png","C:\\Users\\liuya\\Desktop\\logo_0.png");
}
}
补充知识
三基色是光的红,绿,蓝
0xff0000 为RGB十六位制的红色
0x00ff00 为RGB十六位制的绿色
0x0000ff 为RGB十六位制的蓝色
运行主方法即可。
来源:https://blog.csdn.net/weixin_40986713/article/details/121332852
0
投稿
猜你喜欢
- 1.前提已经配置Sleuth,可参考2.什么是Zipkin?官网:https://zipkin.io/大规模分布式系统的APM工具( App
- 初学java,单个的接触有点迷糊,所以总结下他们的关系一、关系Collection--List:以特定顺序存储--ArrayList、Lin
- 此例子,用于说明如何在Java中对“注解 Annotation”的定义、使用和解析的操作。注解一般用于自定义开发框架中,至于为什么使用,此处
- 一、实现对ScrollViewer样式的自定义主要包括:1、滚动条宽度设置2、滚动条颜色3、滚动条圆角4、滚动条拉动时的效果mouseove
- 背景之前在网上发现这个问题public class GenericTest { //方法一 public static <T exte
- 自定义Repository接口要定义一个repository接口,你首先需要自定义一个实体类专用的Repository接口。该接口必须扩展
- 多态概述多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定
- 问题遇到问题:在前后端分离跨域访问的项目中shiro进行权限拦截失效 (即使有正确权限的访问也会被拦截) 时造成302重定向错误等问题报错:
- 本文实例为大家分享了Android SearchView搜索控件的具体实现代码,供大家参考,具体内容如下方法介绍setQueryHint设置
- Spring Security简介:Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块
- Android EditText限制输入字符类型的方法总结前言:最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方
- 这里介绍一个简易的音乐播放器,供大家参考,具体内容如下效果图如下:但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,
- 一、导论java技术体系中所提到的内存自动化管理归根结底就是内存的分配与回收两个问题,之前已经和大家谈过java回收的相关知识,今天来和大家
- 抽象类1.引出抽象类向上转型带来的最大的好处就是参数统一化,使用共同的父类引用,就可以接收所有的子类实例。多态非常依赖方法覆写,但是子类可以
- 前言:我们都知道Android开发者的必备工具:AndroidStudio。是开发人员用来编译、测试的专用工具。今天在使用And
- 前言作为一个写java的使用最多的轻量级框架莫过于spring,不管是老项目用到的springmvc,还是现在流行的springboot,都
- @Cacheable自定义KeyGenerator1. 概述SpringBoot 使用 @Cacheable 可以方便的管理缓存数据,在不指
- 在使用多线程过程中,可能会遇到在一些情况下必须等待子线程全部执行结束后主线程才进行下一步,做法如下: //在使用多线程过程中,可能会遇到在一
- 1、认识 Spring CacheSpring Cache是Spring提供的一整套缓存解决方案。它本身并不提供缓存实现,而是提供统一的接口
- FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件