我们强烈建议你在下面的帖子中提及此内容。
- Java中的图像处理S1(读和写)
- Java中的图像处理S2(获取并设置像素)
在这个集合中, 我们将创建镜像。
主要技巧是仅从左到右获取源像素值, 并在从右到左的结果图像中设置相同的值。
算法:
- 阅读源图像缓冲图像读取给定的图像。
- 获取给定图像的尺寸。
- 创建另一个相同尺寸的BufferedImage对象以保存镜像。
- 得到ARGB(Alpha, 红色, 绿色和蓝色)源图像中的值(从左到右)。
- 组ARGB(Alpha, 红色, 绿色和蓝色)到新创建的图像(从右到左)。
- 对图像的每个像素重复步骤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
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
评论前必须登录!
注册