gpt4 book ai didi

Java - 为大图像添加填充

转载 作者:行者123 更新时间:2023-11-30 11:53:09 24 4
gpt4 key购买 nike

我需要在大图像周围添加特定的填充,而我当前使用的方法(如下面的代码片段所示)正在占用内存。打开 PNG 会立即占用约 300mb 的内存,而复制它会使我超过 700mb,所以我正在寻找一种方法来执行此操作而不会占用所有可用内存。有什么建议吗?

...
BufferedImage img = ImageIO.read(new File("OldWorld.png"));
BufferedImage img2 = new BufferedImage(img.getHeight()+padding,img.getWidth()+padding, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = img2.createGraphics();
g2.setPaint(new Color(0,0,0,0);
g2.fillRect(0, 0, img.getHeight()+padding, img.getWidth()+padding);
g2.drawImage(img, img.getHeight(),img.getWidth(), null);
...

最佳答案

没有直接的方法可以解决这个问题。在 Java 中处理大图像会消耗大量内存。

一些替代方案是:

  1. 使用 netpbm 库预处理您的图像 http://netpbm.sourceforge.net/ .要填充图像,请使用如下命令:

    pngtopnm OldWorld.png | pnmpad -black 48 -left 48 -top 48 | pnmtopng > padded.png
  2. 减少图像中的颜色数量,以便您可以使用图像类型BufferedImage.TYPE_INDEXED 每个像素只有一个字节,而不是四个字节。

  3. 使用多个图 block 代替单个大图像并工作一次一 block 瓷砖。然后你避免有很多图像内存中的数据。

关于Java - 为大图像添加填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462553/

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