在Java中将图像缝合在一起
作者:互联网
我正在尝试使用Java将一些图像拼接在一起.我有一堆想要拼接的图像,而且它们的尺寸都相同,所以实际上我只是想将它们排列在一起而已.我有它的工作,但它很慢,并且可能占用大量内存.我想知道是否有更简单的方法:
public static void main(String[] args) throws IOException
{
int dim = 256;
BufferedImage merged = null;
for(int y = 0; y<10;y++)
{
for(int x = 0; x<10;x++)
{
URL url = new URL(someURL);
BufferedImage nextImage = ImageIO.read(url);
if(merged==null)
merged=nextImage;
else
{
BufferedImage tempMerged;
tempMerged = new BufferedImage(10*dim,10*dim,merged.getType());
//Write first image
for(int xx=0;xx<merged.getWidth();xx++)
for(int yy=0;yy<merged.getHeight();yy++)
tempMerged.setRGB(xx,yy,merged.getRGB(xx,yy));
//Write img2
for(int xx=0;xx<dim;xx++)
{
for(int yy=0;yy<dim;yy++)
{
int destX = (x*dim)+xx;
int destY = (y*dim)+yy;
tempMerged.setRGB(destX,destY,nextImage.getRGB(xx,yy));
}
}
merged=tempMerged;
}
System.out.println("Stitched image at "+x+","+y);
}
}
ImageIO.write(merged, "png", new File("merged.png"));
}
解决方法:
AFAIK您在这里要做的是在图像上写入图层.但是,png格式不支持此功能.
您必须创建一个两倍于源图像大小的新图像(例如,对于2x 512×512,新图像应为512×1024或1024×512).然后,将源图像渲染到目标图像的相应区域/矩形.
标签:javax-imageio,image-processing,java-io,java 来源: https://codeday.me/bug/20191102/1992884.html