个性化阅读
专注于IT技术分析

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.jpg


Oup.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.jpg


Oup.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.jpg


Oup.jpg

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

赞(0) 打赏
未经允许不得转载:srcmini » Java中的图像处理S5(彩色图像转为红色,绿色,蓝色图像)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏