Re: Does OpenEXR Handle Large Images

Florian Kainz <[email protected]> Wed, 16 Feb 2011 10:48:15 -0800
Newsgroups gmane.comp.video.openexr.user
Message-ID <[email protected]>
Hi Ben,

There's one more limitation on the file size - the raw data for
a compressed block in the file cannot be larger than 2GBytes.
In scanline files a block is a group of contiguous scanlines
(32 for PIZ, B44 and B44A; 16 for PXR24 and ZIP; and 1 for the
rest).  In tiled files each tile is its own block.

You could hit the compression block size limit with extremely wide
multi-channel files, but this is more of a theoretical issue. For
example, a 10-channel, 16-bit PIZ-compressed file would have to be
over 3.3 million pixels wide.  With tiled files, the maximum size
of the compression block size is unlikely to be a problem unless
the tiles are very large.

Florian


Michael Wolf wrote:
> On Tue, 15 Feb 2011 20:38:10 +0100, Ben Thompson <[email protected]> 
> wrote:
> 
>> Hello Everyone,
> 
> Hello Ben,
> 
>> I'm trying to create large HDR image files. I have been using
>> applications that write both .hdr and .exr; I have been using the former
>> for no special reason.
>>
>> However, it seems that the applications generate invalid .hdr files when
>> the image is more than 32767 pixels wide. I believe this is because they
>> write RLE-compressed .hdr and RLE is not supported for images this wide.
>>
>> I'd like to know if .exr files have any limits on image size both in the
>> case of no compression and compression with each/any of the available
>> compression methods. I know of RLE, Zip (with and without
>> multi-scanline, PIZ and PXR24.
> 
> The largest file I've created is a tiled EXR at 86,400 x 43,200 pixels, 
> half, ZIP compressed, 3.9GB.
> 
> So far the only major limitation I've encountered is the C++ i/o library 
> on windows capping at 2GB, which is why I have a patch for windows that 
> uses OS specific i/o routines.
> (it works as expected out of the box on OSX, the only other platform we 
> support so far).
> 
> Basically, pointers into the file are 64-bit and dimensions 32-bit 
> integer. I suspect those to be the only limits.
> 
> I can send you the patch if you need it.
> 
> Cheers,
> Mike
>