java - 将 png 图像添加到 java 小程序

标签 java image applet png

我对 Java 很陌生,我想将 PNG 图像添加到我的小程序中。由于某种原因,当我添加此图像时,我收到以下错误:

线程“Image Fetcher 0”中出现异常 java.lang.OutOfMemoryError:Java 堆空间 在 java.awt.image.DataBufferInt.(来源未知) 在 java.awt.image.Raster.createPackedRaster(来源未知) 在 java.awt.image.DirectColorModel.createCompatibleWritableRaster(来源未知) 在 sun.awt.image.ImageRepresentation.createBufferedImage(来源未知) 在 sun.awt.image.ImageRepresentation.setPixels(来源未知) 在 sun.awt.image.ImageDecoder.setPixels(来源未知) 在 sun.awt.image.PNGImageDecoder.sendPixels(来源未知) 在 sun.awt.image.PNGImageDecoder.productImage(来源未知) 在 sun.awt.image.InputStreamImageSource.doFetch(来源未知) 在 sun.awt.image.ImageFetcher.fetchloop(来源未知) 在 sun.awt.image.ImageFetcher.run(来源未知)

当我尝试添加 jpeg 图像时,效果很好。我该如何解决这个问题?

最佳答案

您的 PNG 图像有多大?从您给我的堆栈跟踪来看,当您尝试从加载的图像创建 BufferedImage 时,您似乎用完了堆空间。您可以尝试将图像调整为较小的尺寸。

您可以首先尝试增加堆大小,看看是否可以解决问题 - 请参阅java_arguments参数给小程序,尽管这不是一个永久的解决方案(没有人喜欢占用内存的小程序)。您还应该通过分析器运行您的应用程序,看看是什么消耗了大部分内存。 OutOfMemoryError 可能意味着某处存在内存泄漏。它甚至可能位于图像加载类之外,因为在尝试加载图像时堆可能已经满了,并且图像加载导致堆填满。尝试使用 visualvm 中的探查器因为它会告诉您最大的消费者。

希望有帮助:)

-- Flaviu Cipcigan

关于java - 将 png 图像添加到 java 小程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315648/

相关文章:

Java Applet 安全问题

java - 在 JButton 中使用匿名 ActionListener 隐藏 JFrame

ubuntu - Ubuntu 或 Android Eclipse 中的 OpenJDK

java - 如何设置水平滚动 Pane 的起始位置在左端?

java - 在Android中同时从多个Firebase数据库引用中检索数据

python - 将图片与视频合并

python - 使用 "Scrapy"进行图像抓取没有结果

android - 如何在 Android 上调整图像大小?

客户端的 Java 媒体框架?

java - 从另一个 Java 小程序访问 Java 小程序