效果对比
原图
反色处理
原图
反色处理
代码实现
-
-
-
import ;
-
import ;
-
import .*;
-
-
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 = (fileInputStream);
-
//生成字符图片
-
int w = ();
-
int h = ();
-
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 = (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);
-
(x,y,newPixel);
-
}
-
}
-
(imageBuffer, "png", new File(fileUrl)); //输出图片
-
} catch (Exception e) {
-
();
-
}
-
}
-
-
/**
-
* @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\\","C:\\Users\\liuya\\Desktop\\logo_0.png");
-
}
-
}
单类实现,修改代码中的图片地址和需要生成的新图片的地址,运行主方法就行。
补充知识
计算机中的三基色是光的红,绿,蓝
0xff0000 为RGB十六位制的红色
0x00ff00 为RGB十六位制的绿色
0x0000ff 为RGB十六位制的蓝色
相关知识
.image是Java提供的用于图像处理的标准类库,它包含了一组类和接口,用于表示、操作和处理图像数据。这个类库提供了丰富的功能,可用于图像的加载、编辑、转换、合成等操作。
下面是对的详细解析:
-
图像表示:提供了多种类来表示图像数据。其中最常用的是BufferedImage类,它是一个带有图像数据缓冲区的Image对象,可以直接访问和修改图像的像素值。此外,还包括IndexColorModel用于表示索引颜色模型、Raster用于表示图像数据以及ColorSpace用于表示颜色空间等。
-
图像加载与保存:提供了一些类和方法用于图像的加载和保存。例如,ImageIO类提供了静态方法,可以从文件或输入流中加载图像,并将图像保存到文件或输出流中。通过ImageIO,开发者可以方便地读取和写入各种图像格式,如JPEG、PNG、GIF等。
-
图像编辑与绘制:提供了一些类和方法用于图像的编辑和绘制。Graphics类是一个抽象基类,它提供了诸如绘制线条、填充矩形、绘制文本等基本绘图操作。通过Graphics类,可以在图像上进行绘制和编辑,如绘制几何图形、添加文本、绘制图像等。
-
颜色模型与调整:提供了颜色模型相关的类和方法,用于处理图像的颜色信息和调整。ColorModel类是表示图像颜色模型的抽象基类,它定义了获取和设置像素值、颜色空间转换等操作。通过ColorModel,可以进行颜色空间的转换、颜色调整、像素读写等操作。
-
图像滤镜与转换:提供了一些滤镜和转换操作的类和接口。例如,ConvolveOp类可以应用卷积矩阵来实现图像的模糊、锐化等效果。AffineTransform类可以进行图像的平移、旋转、缩放等几何变换操作。这些类和接口可以用于对图像进行各种滤镜和转换操作,实现图像的特效处理和变换。
-
高级图像处理:提供了一些高级的图像处理功能。例如,RescaleOp类可以进行图像的亮度、对比度调整;LookupOp类可以通过查找表对图像进行颜色映射;BandCombineOp类可以合并多个图像的不同波段。这些类可以帮助开发者实现更复杂的图像处理算法和效果。
-
图像编码与解码:提供了一些类和方法来支持图像的编码和解码。例如,ImageWriter和ImageReader是抽象类,它们定义了图像编码和解码的基本操作。通过这些类,开发者可以实现自定义的图像编码器和解码器,扩展对不同图像格式的支持。
-
图像缩放与剪裁:提供了一些类和方法用于图像的缩放和剪裁。例如,AffineTransformOp类可用于根据指定的仿射变换矩阵对图像进行缩放、旋转、平移等操作。CropImageFilter类可用于裁剪图像的指定区域。这些类可以帮助开发者实现图像的大小调整和局部区域的提取。
总结来说,是Java提供的用于图像处理的标准类库,它提供了丰富的功能用于图像的加载、编辑、转换、合成等操作。开发者可以通过这个类库读取、处理和保存各种图像格式的数据,并应用滤镜、调整、绘制等操作来实现更复杂的图像处理需求。为开发者提供了一套强大而灵活的工具,使得在Java应用程序中进行图像处理变得更加方便和高效。