Jos*_*h G 8 java swing image awt
我无法创建一个巨大的BufferedImage(缺少内存不是问题).有没有人有任何想法?
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
The*_*ann 15
我相信这是Raster班级的限制.Width * Height需要小于Integer.MAX_VALUE
http://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html
作为一种解决方法,我可能Integer.MAX_VALUE会将我的BufferedImage分成宽度和高度都小于平方根的部分,因此最大值为46,340x46,340.
更新:看起来http://code.google.com/p/pngj/上的PNGJ库是为此目的而创建的.
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |