【问题标题】:Java JAI - creating 1 BIG jpg image from many smaller onesJava JAI - 从许多较小的图像创建 1 个 BIG jpg 图像
【发布时间】:2011-09-07 16:38:55
【问题描述】:

在你们都说“这已经在某处……”之前:-) 请让我说我看过并没有找到使用 JAI 平铺多个 jpg 并保存到磁盘而没有 Java 堆错误或其他内存问题的简单示例 我在任何地方都找不到完整的工作代码集——它们似乎都写错了/未经检查,或者根本不起作用....

帮我一些-BiWan Kenobi - 你是我唯一的希望!

【问题讨论】:

  • 如果您遇到内存问题,您是否考虑过简单地增加 JVM 可用的内存空间?我无法想象如果你给它 500Mb 或其他东西,你会遇到内存问题。
  • 你需要使用JAI吗?没有它也可以轻松完成。
  • 我想不是,但我被告知其他帖子...你能告诉我如何以另一种方式。请记住,我正在创建一个超过 15,000 像素正方形的大图像,因此在尝试直接创建 BufferedImage 时遇到了 JVM 内存堆问题......任何帮助将不胜感激!
  • @glowcoder :我已经尝试过了 - 仍然出现内存问题...
  • @Sanjay,文件的大小是多少?另外,实际上失败的代码的 sn-p 是什么?可能是一些设置问题。

标签: java jpeg jai tile


【解决方案1】:

图片有多大?您也许可以只增加分配给 JVM 的内存。如果它们很大,那么 JPG 可能不是正确的格式,因为您需要将整个图像加载到内存中以对其进行压缩并将其写出。使用 JAI 编写平铺的 TIFF 可能会更好。

我在这里问了一个类似的问题:Write swing component to large TIFF image using JAI

【讨论】:

  • 谢谢山姆。我尝试将 jvm 增加到一个巨大的 mnumber,但这并没有让我创建 jpg 所需大小的 BufferedImage。我没有看到任何关于如何为非常大的 jpg 完成此操作的代码示例。从您的评论中听起来,如果没有首先击中最初的大内存,就无法写出 jpgs?真的?我真的不想切换到 TIFF,因为这意味着我的代码需要大量重写......想法?
  • 15000px 图像大约是 643MB 图像(假设 8-bi RGB 为每像素 3 字节),因此您可能需要为 JVM 分配 1.5GB(单个图像加上整个图像和 JPEG版本加载到内存中)。如果这在 Windows 中的 32 位 JRE 中不可行(自定义测试显示使用 32 位 JRE 的 Windows 中 JVM 可用的最大内存约为 1,4-1,5GB),但您不能使用 64 位 (x64) JRE as JAI 仅适用于 32 位 JRE。所以你有麻烦了。使用 JPEG 管理如此巨大的图像也是不够的。一些使用非常大图像的项目使用 TIFF 或自定义格式 (Gigapan)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 2017-06-13
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多