📜  Java中的图像处理——创建镜像

📅  最后修改于: 2022-05-13 01:54:49.629000             🧑  作者: Mango

Java中的图像处理——创建镜像

先决条件:

  • Java中的图像处理——读写
  • Java中的图像处理——获取和设置像素
  • Java中的图像处理——彩色图像到灰度图像的转换
  • Java中的图像处理——彩色图像到负图像的转换
  • Java中的图像处理——彩色到红绿蓝图像的转换
  • Java中的图像处理——彩色图像到棕褐色图像的转换
  • Java中的图像处理——创建随机像素图像

在这组中,我们将创建一个镜像。在镜子中看到的物体的图像是它的镜面反射或镜像。在这样的图像中,对象的右侧出现在左侧,反之亦然。因此,镜像被称为横向反转,这种现象称为横向反转。主要技巧是从左到右获取源像素值,并在生成的图像中从右到左设置相同的值。

算法:

  1. 读取 BufferedImage 中的源图像以读取给定图像。
  2. 获取给定图像的尺寸。
  3. 创建另一个相同尺寸的 BufferedImage 对象来保存镜像。
  4. 从源图像中获取 ARGB(Alpha、Red、Green 和 Blue)值 [以从左到右的方式]。
  5. 将 ARGB(Alpha、Red、Green 和 Blue)设置为新创建的图像 [以从右到左的方式]。
  6. 对图像的每个像素重复步骤 4 和 5。

执行:

Java
// Java program to demonstrate
// creation of a mirror image
  
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
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(
                "C:/Users/hp/Desktop/Image Processing in Java/gfg-logo.png");
            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(
                "C:/Users/hp/Desktop/Image Processing in Java/GFG.png");
            ImageIO.write(mimg, "png", f);
        }
        catch (IOException e) {
            System.out.println("Error: " + e);
        }
    }
}


输出: