编程语言
首页 > 编程语言> > 在Java中将图像缝合在一起

在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