Java中的图像处理S5(彩色图像转为红色,绿色,蓝色图像)

我们强烈建议你在下面的帖子中提及此内容。

  • Java中的图像处理S1(读和写)
  • Java中的图像处理S2(获取并设置像素)
在这个集合中, 我们将把彩色图像转换为具有红色效果, 绿色效果或蓝色效果的图像。
基本思想是获取每个坐标的像素值, 然后保持所需的结果彩色像素值相同, 并将其他两个像素值设置为零。
转换为红色图像
算法
用于将彩色图像转换为红色:
  1. 获取像素的RGB值。
  2. 如下设置RGB值:
    • R:不变
    • G:设为0
    • B:设为0
  3. 将像素的R, G和B值替换为步骤2中计算出的值。
  4. 对图像的每个像素重复步骤1到步骤3。
实现以上算法的:
//Java program to demonstrate colored to red colored image conversion import java.io.File; import java.io.IOException; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class RedImage { public static void main(String args[]) throws IOException { BufferedImage img = null ; File f = null ; //read image try { f = new File( "G:\\Inp.jpg" ); img = ImageIO.read(f); } catch (IOException e) { System.out.println(e); }//get width and height int width = img.getWidth(); int height = img.getHeight(); //convert to red image for ( int y = 0 ; y < height; y++) { for ( int x = 0 ; x < width; x++) { int p = img.getRGB(x, y); int a = (p> > 24 )& 0xff ; int r = (p> > 16 )& 0xff ; //set new RGB //keeping the r value same as in original //image and setting g and b as 0. p = (a< < 24 ) | (r< < 16 ) | ( 0 < < 8 ) | 0 ; img.setRGB(x, y, p); } }//write image try { f = new File( "G:\\Out.jpg" ); ImageIO.write(img, "jpg" , f); } catch (IOException e) { System.out.println(e); } } }

注意:该代码无法在在线IDE上运行, 因为它需要磁盘上的映像。
输出如下:
Inp.jpgOup.jpg

转换为绿色图像
Algotithm
用于将彩色图像转换为绿色:
  1. 获取像素的RGB值。
  2. 如下设置RGB值:
    • R:设为0
    • G:不变
    • B:设为0
  3. 将像素的R, G和B值替换为步骤2中计算出的值。
  4. 对图像的每个像素重复步骤1到步骤3。
实现
以上算法的:
//Java program to demonstrate colored to green coloured //image conversion import java.io.File; import java.io.IOException; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class GreenImage { public static void main(String args[]) throws IOException { BufferedImage img = null ; File f = null ; //read image try { f = new File( "G:\\Inp.jpg" ); img = ImageIO.read(f); } catch (IOException e) { System.out.println(e); }//get width and height int width = img.getWidth(); int height = img.getHeight(); //convert to green image for ( int y = 0 ; y < height; y++) { for ( int x = 0 ; x < width; x++) { int p = img.getRGB(x, y); int a = (p> > 24 )& 0xff ; int g = (p> > 8 )& 0xff ; //set new RGB //keeping the g value same as in original //image and setting r and b as 0. p = (a< < 24 ) | ( 0 < < 16 ) | (g< < 8 ) | 0 ; img.setRGB(x, y, p); } }//write image try { f = new File( "G:\\Out.jpg" ); ImageIO.write(img, "jpg" , f); } catch (IOException e) { System.out.println(e); } } }

注意:该代码无法在在线IDE上运行, 因为它需要磁盘上的映像。
输出如下:
Inp.jpgOup.jpg

转换为蓝色图像
算法
用于将彩色图像转换为蓝色:
  1. 获取像素的RGB值。
  2. 如下设置RGB值:
    • R:设为0
    • G:设为0
    • B:没有变化
  3. 将像素的R, G和B值替换为步骤2中计算出的值。
  4. 对图像的每个像素重复步骤1到步骤3。
实现
以上算法的:
//Java program to demonstrate colored to blue coloured image conversion import java.io.File; import java.io.IOException; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class BlueImage { public static void main(String args[]) throws IOException { BufferedImage img = null ; File f = null ; //read image try { f = new File( "G:\\Inp.jpg" ); img = ImageIO.read(f); } catch (IOException e) { System.out.println(e); }//get width and height int width = img.getWidth(); int height = img.getHeight(); //convert to blue image for ( int y = 0 ; y < height; y++) { for ( int x = 0 ; x < width; x++) { int p = img.getRGB(x, y); int a = (p> > 24 )& 0xff ; int b = p& 0xff ; //set new RGB //keeping the b value same as in original //image and setting r and g as 0. p = (a< < 24 ) | ( 0 < < 16 ) | ( 0 < < 8 ) | b; img.setRGB(x, y, p); } }//write image try { f = new File( "G:\\Out.jpg" ); ImageIO.write(img, "jpg" , f); } catch (IOException e) { System.out.println(e); } } }

注意:该代码无法在在线IDE上运行, 因为它需要磁盘上的映像。
输出如下:
Inp.jpgOup.jpg

【Java中的图像处理S5(彩色图像转为红色,绿色,蓝色图像)】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读