java实现图片反色处理代码示例

时间:2024-10-14 20:33:06

效果对比

原图

 反色处理

 原图

 反色处理

 代码实现

  1. import ;
  2. import ;
  3. import .*;
  4. public class ImageColor {
  5. /**
  6. * @Description: 反色
  7. * @param imgPath 图片路径
  8. * @param fileUrl 输出图片路径
  9. * @throws
  10. */
  11. public static void inverse(String imgPath, String fileUrl){
  12. try {
  13. FileInputStream fileInputStream = new FileInputStream(imgPath);
  14. BufferedImage image = (fileInputStream);
  15. //生成字符图片
  16. int w = ();
  17. int h = ();
  18. BufferedImage imageBuffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);;
  19. // 绘制字符
  20. for (int y = 0; y < h; y++) {
  21. for (int x = 0; x< w; x++) {
  22. int rgb = (x, y);
  23. int R = (rgb & 0xff0000) >> 16;
  24. int G = (rgb & 0x00ff00) >> 8;
  25. int B = rgb & 0x0000ff;
  26. int newPixel=colorToRGB(255-R,255-G,255-B);
  27. (x,y,newPixel);
  28. }
  29. }
  30. (imageBuffer, "png", new File(fileUrl)); //输出图片
  31. } catch (Exception e) {
  32. ();
  33. }
  34. }
  35. /**
  36. * @Description: 颜色转rgb值
  37. * @throws
  38. */
  39. public static int colorToRGB(int red,int green,int blue){
  40. int newPixel=0;
  41. newPixel=newPixel << 8;
  42. newPixel+=red;
  43. newPixel=newPixel << 8;
  44. newPixel+=green;
  45. newPixel=newPixel << 8;
  46. newPixel+=blue;
  47. return newPixel;
  48. }
  49. public static void main(String[] args) throws IOException {
  50. inverse("C:\\Users\\liuya\\Desktop\\","C:\\Users\\liuya\\Desktop\\logo_0.png");
  51. }
  52. }

单类实现,修改代码中的图片地址和需要生成的新图片的地址,运行主方法就行。

补充知识

计算机中的三基色是光的红,绿,蓝

0xff0000  为RGB十六位制的红色

0x00ff00  为RGB十六位制的绿色

0x0000ff  为RGB十六位制的蓝色

相关知识

.image是Java提供的用于图像处理的标准类库,它包含了一组类和接口,用于表示、操作和处理图像数据。这个类库提供了丰富的功能,可用于图像的加载、编辑、转换、合成等操作。

下面是对的详细解析:

  1. 图像表示:提供了多种类来表示图像数据。其中最常用的是BufferedImage类,它是一个带有图像数据缓冲区的Image对象,可以直接访问和修改图像的像素值。此外,还包括IndexColorModel用于表示索引颜色模型、Raster用于表示图像数据以及ColorSpace用于表示颜色空间等。

  2. 图像加载与保存:提供了一些类和方法用于图像的加载和保存。例如,ImageIO类提供了静态方法,可以从文件或输入流中加载图像,并将图像保存到文件或输出流中。通过ImageIO,开发者可以方便地读取和写入各种图像格式,如JPEG、PNG、GIF等。

  3. 图像编辑与绘制:提供了一些类和方法用于图像的编辑和绘制。Graphics类是一个抽象基类,它提供了诸如绘制线条、填充矩形、绘制文本等基本绘图操作。通过Graphics类,可以在图像上进行绘制和编辑,如绘制几何图形、添加文本、绘制图像等。

  4. 颜色模型与调整:提供了颜色模型相关的类和方法,用于处理图像的颜色信息和调整。ColorModel类是表示图像颜色模型的抽象基类,它定义了获取和设置像素值、颜色空间转换等操作。通过ColorModel,可以进行颜色空间的转换、颜色调整、像素读写等操作。

  5. 图像滤镜与转换:提供了一些滤镜和转换操作的类和接口。例如,ConvolveOp类可以应用卷积矩阵来实现图像的模糊、锐化等效果。AffineTransform类可以进行图像的平移、旋转、缩放等几何变换操作。这些类和接口可以用于对图像进行各种滤镜和转换操作,实现图像的特效处理和变换。

  6. 高级图像处理:提供了一些高级的图像处理功能。例如,RescaleOp类可以进行图像的亮度、对比度调整;LookupOp类可以通过查找表对图像进行颜色映射;BandCombineOp类可以合并多个图像的不同波段。这些类可以帮助开发者实现更复杂的图像处理算法和效果。

  7. 图像编码与解码:提供了一些类和方法来支持图像的编码和解码。例如,ImageWriter和ImageReader是抽象类,它们定义了图像编码和解码的基本操作。通过这些类,开发者可以实现自定义的图像编码器和解码器,扩展对不同图像格式的支持。

  8. 图像缩放与剪裁:提供了一些类和方法用于图像的缩放和剪裁。例如,AffineTransformOp类可用于根据指定的仿射变换矩阵对图像进行缩放、旋转、平移等操作。CropImageFilter类可用于裁剪图像的指定区域。这些类可以帮助开发者实现图像的大小调整和局部区域的提取。

总结来说,是Java提供的用于图像处理的标准类库,它提供了丰富的功能用于图像的加载、编辑、转换、合成等操作。开发者可以通过这个类库读取、处理和保存各种图像格式的数据,并应用滤镜、调整、绘制等操作来实现更复杂的图像处理需求。为开发者提供了一套强大而灵活的工具,使得在Java应用程序中进行图像处理变得更加方便和高效。