我们强烈建议你在下面的帖子中提及此内容。
- Java中的图像处理S1(读和写)
- Java中的图像处理S2(获取并设置像素)
主要技巧是仅从左到右获取源像素值, 并在从右到左的结果图像中设置相同的值。
算法:
- 阅读源图像缓冲图像读取给定的图像。
- 获取给定图像的尺寸。
- 创建另一个相同尺寸的BufferedImage对象以保存镜像。
- 得到ARGB(Alpha, 红色, 绿色和蓝色)源图像中的值(从左到右)。
- 组ARGB(Alpha, 红色, 绿色和蓝色)到新创建的图像(从右到左)。
- 对图像的每个像素重复步骤4和5。
//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
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- Java中的图像处理S9(人脸检测)
- Java中的图像处理S7(创建随机像素图像)
- Java中的图像处理S5(彩色图像转为红色,绿色,蓝色图像)
- 每日LeetCode力扣(21~25)
- 每日LeetCode力扣(36~40)
- 每日LeetCode力扣(26~30)
- #yyds干货盘点#RabbitMQ示例5(主题topic交换机)
- Android高手笔记 - 启动优化
- 动力节点Spring框架学习笔记-王鹤Spring 事务