创造出巨大的BufferedImage [英] creating huge BufferedImage

查看:735
本文介绍了创造出巨大的BufferedImage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法创造了巨大的BufferedImage(内存不足是没有问题的)。没有人有任何想法?

1。新的BufferedImage(10000,1000000 BufferedImage.TYPE_3BYTE_BGR);

 异常线程mainjava.lang.NegativeArraySizeException
    在java.awt.image.DataBufferByte中的<&初始化GT;(DataBufferByte.java:42)
    在java.awt.image.Raster.createInterleavedRaster(Raster.java:253)
    在java.awt.image.BufferedImage中的<&初始化GT;(BufferedImage.java:368)

2。新的BufferedImage(10000,1000000 BufferedImage.TYPE_INT_RGB);

 异常螺纹主java.lang.IllegalArgumentException异常:尺寸(宽= 10000 HEIGHT = 1000000)过大
在java.awt.image.SampleModel中的<&初始化GT;(SampleModel.java:112)
    在java.awt.image.SinglePixelPackedSampleModel中的<&初始化GT;(SinglePixelPackedSampleModel.java:124)
    在java.awt.image.Raster.createPackedRaster(Raster.java:770)
    在java.awt.image.Raster.createPackedRaster(Raster.java:466)
    在java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
    在java.awt.image.BufferedImage中的<&初始化GT;(BufferedImage.java:315)


解决方案

我相信这是栅格类的限制。 宽*高必须小于 Integer.MAX_VALUE的

<一个href=\"http://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html\">http://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html

由于周围的工作我可能会分裂我的BufferedImage到哪里宽度和高度都小于 Integer.MAX_VALUE的,所以46,340x46,340平方根节最大。

更新:它看起来像 PNGJ 是在图书馆的http:// code.google.com/p/pngj/~~V~~aux 为这个目的而创建。

I'm unable to create a huge BufferedImage (lack of memory is not the problem). Does anyone have any ideas?

1. new BufferedImage(10000, 1000000, BufferedImage.TYPE_3BYTE_BGR);

Exception in thread "main" java.lang.NegativeArraySizeException
    at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:42)
    at java.awt.image.Raster.createInterleavedRaster(Raster.java:253)
    at java.awt.image.BufferedImage.<init>(BufferedImage.java:368)

2. new BufferedImage(10000, 1000000, BufferedImage.TYPE_INT_RGB);

Exception in thread "main" java.lang.IllegalArgumentException: Dimensions (width=10000 height=1000000) are too large    
at java.awt.image.SampleModel.<init>(SampleModel.java:112)
    at java.awt.image.SinglePixelPackedSampleModel.<init>(SinglePixelPackedSampleModel.java:124)
    at java.awt.image.Raster.createPackedRaster(Raster.java:770)
    at java.awt.image.Raster.createPackedRaster(Raster.java:466)
    at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
    at java.awt.image.BufferedImage.<init>(BufferedImage.java:315)

解决方案

I believe this is a limitation of the Raster class. Width * Height needs to be less than Integer.MAX_VALUE

http://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html

As a work around I'd probably split my BufferedImage into sections where width and height are both less than the square root of Integer.MAX_VALUE, so 46,340x46,340 max.

UPDATE: It looks like the PNGJ Library at http://code.google.com/p/pngj/ was created for this purpose.

这篇关于创造出巨大的BufferedImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆