Discussion:
[Openexr-user] Does OpenEXR Handle Large Images
Ben Thompson
2011-02-15 19:38:10 UTC
Permalink
Hello Everyone,

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.

Thanks,

661
Michael Wolf
2011-02-16 16:28:21 UTC
Permalink
Post by Ben Thompson
Hello Everyone,
Hello Ben,
Post by Ben Thompson
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
--
db&w Bornemann und Wolf GbR
Seyfferstr. 34
70197 Stuttgart
Deutschland

***@db-w.com

http://www.db-w.com

tel: +49 (711) 664 525-3
fax: +49 (711) 664 525-1
mob: +49 (173) 66 37 652

icq: 252887990
skype: lupus_lux
msn: ***@db-w.com
Florian Kainz
2011-02-16 18:48:15 UTC
Permalink
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
Post by Michael Wolf
Post by Ben Thompson
Hello Everyone,
Hello Ben,
Post by Ben Thompson
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
Loading...