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

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

  • Java中的图像处理S1(读和写)
  • Java中的图像处理S2(获取并设置像素)
【Java中的图像处理S8(创建镜像)】在这个集合中, 我们将创建镜像。
主要技巧是仅从左到右获取源像素值, 并在从右到左的结果图像中设置相同的值。
算法:
  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.jpgOut.jpg

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

    推荐阅读