gpt4 book ai didi

java - 使用java分割图像

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:34 25 4
gpt4 key购买 nike

实际上我正在使用 JAVA 分割 600x700 .jpg 文件。这里该方法的参数宽度和高度与图像的宽度和高度完全相同。但在执行过程中,我遇到了与堆内存相关的异常。

 /*
* this method will split the secureImage file
*/
private BufferedImage[] getsecureFragments(int width, int height,
File secureFile)throws IOException {

FileInputStream secureFileStream = new FileInputStream(secureFile);
BufferedImage secureimage = ImageIO.read(secureFileStream);
int rows = width;
int columns = height;
int chunks = rows *columns;
int chunkWidth = width/width;
int chunkHeight=height/height;

int count = 0;
BufferedImage fragmentImgs[] = new BufferedImage[chunks];
System.out.println(fragmentImgs.length);
for (int x = 0; x < rows; x++) {
for (int y = 0; y < columns; y++) {
//Initialize the image array with image chunks
fragmentImgs[count] = new BufferedImage(chunkWidth, chunkHeight, secureimage.getType());

// draws the image chunk
Graphics2D grSecure = fragmentImgs[count++].createGraphics();
grSecure.drawImage(secureimage, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null);
grSecure.dispose();
}
}

System.out.println("Splitting done");

//writing mini images into image files for test purpose
for (int i = 0; i < fragmentImgs.length; i++) {
ImageIO.write(fragmentImgs[i], "jpg", new File("F://uploads//fragmentImgs" + i + ".jpg"));
}
System.out.println("Mini images created");
return fragmentImgs;
}//end of method getsecureFragments

线程“http-bio-8080-exec-9”中出现异常java.lang.OutOfMemoryError:Java堆空间

这是因为我的逻辑缺失?或者我是否需要了解有关 JAVA 堆内存的更多信息。

最佳答案

您可以使用更多堆空间来运行 JVM,例如启动 JVM 时添加 -Xmx 参数。

您还可以重写代码来复制一个部分,将其写入磁盘,丢弃它,然后执行下一个部分。此时,程序中的逻辑会生成所有部分,然后保存它们。

关于java - 使用java分割图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com