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

Java中的图像处理S8(创建镜像)

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

  • Java中的图像处理S1(读和写)
  • Java中的图像处理S2(获取并设置像素)

在这个集合中, 我们将创建镜像。

主要技巧是仅从左到右获取源像素值, 并在从右到左的结果图像中设置相同的值。

算法:

  1. 阅读源图像缓冲图像读取给定的图像。
  2. 获取给定图像的尺寸。
  3. 创建另一个相同尺寸的BufferedImage对象以保存镜像。
  4. 得到ARGB(Alpha, 红色, 绿色和蓝色)源图像中的值(从左到右)。
  5. 组ARGB(Alpha, 红色, 绿色和蓝色)到新创建的图像(从右到左)。
  6. 对图像的每个像素重复步骤4和5。

以下是上述步骤的Java实现。

//Java program to demonstrate creation of mirror image
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
  
public class MirrorImage
{
     public static void main(String args[]) throws IOException
     {
         //BufferedImage for source image
         BufferedImage simg = null ;
  
         //File object
         File f = null ;
  
         //Read source image file
         try
         {
             f = new File( "G:\\Inp.jpg" );
             simg = ImageIO.read(f);
         }
  
         catch (IOException e)
         {
             System.out.println( "Error: " + e);
         }
  
         //Get source image dimension
         int width = simg.getWidth();
         int height = simg.getHeight();
  
         //BufferedImage for mirror image
         BufferedImage mimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  
         //Create mirror image pixel by pixel
         for ( int y = 0 ; y <height; y++)
         {
             for ( int lx = 0 , rx = width - 1 ; lx <width; lx++, rx--)
             {
                 //lx starts from the left side of the image
                 //rx starts from the right side of the image
                 //lx is used since we are getting pixel from left side
                 //rx is used to set from right side
                 //get source pixel value
                 int p = simg.getRGB(lx, y);
  
                 //set mirror image pixel value
                 mimg.setRGB(rx, y, p);
             }
         }
  
         //save mirror image
         try
         {
             f = new File( "G:\\Out.jpg" );
             ImageIO.write(mimg, "jpg" , f);
         }
         catch (IOException e)
         {
             System.out.println( "Error: " + e);
         }
     }
}

注意:代码将无法在在线IDE上运行, 因为它需要驱动器中的映像。

输出如下:

Inp.jpg


Out.jpg

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

赞(0) 打赏
未经允许不得转载:srcmini » Java中的图像处理S8(创建镜像)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

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

微信扫一扫打赏