Viewers for Large Images?
mateub asks: "Before setting off to write something of our own, we have been looking for an image viewer that can deal with large (e.g. 10k by 10k pixel) CMYK TIFF images. Note that this is not necessarily the same thing as saying that the file is large, but usually it will be. A smart program could allocate enough memory to show the 1k by 1k pixels of a normal monitor and read other parts of the file when the user scrolls. Not fast, but functional. We've tried ImageMagick, and it isn't that smart--it runs out of memory even on my 1GB RAM, 4GB swap workstation. It appears The Gimp and xv can't even handle CMYK. Are there any programs that can display these images?"
<?
$width={{REPLACE_WITH_NATURAL_WIDTH}};
$height={{REPLACE_WITH_NATURAL_WIDTH}};
$rate={{REPLACE_WITH_INCREASE_RATE}};
?>
<img src="largeimage.jpeg" width="<? print round($ratio * width) ?>" height="<? print round($ratio * height) ?>"
<a href="<? print $PHP_SELF."ratio+.5 ?>"
</body></html>
<head>
<title>Eh</title>
</head>
<body
<font SIZE="5" FACE="Helvetica, Arial, San Serif, Serif, Times">
<blockquote><font SIZE="+3">
<p>The goatse.cx lawyer has informed us that we need a warning!
So.. if you are under the age of 18 or find this photograph offensive, please
don't look at it. Thank you!
</font></p></blockquote>
<hr>
<p ALIGN="CENTER">
<img SRC="hello.jpg" WIDTH="480" HEIGHT="360" ALT="stinger" BORDER="0">
<br>
</p>
<p ALIGN="CENTER">
<a HREF="giver.html">[ the giver ]</a>
<a HREF="mail.html">[ feedback ]</a>
<a HREF="contrib.html">[ contrib ]</a>
</p>
<p ALIGN="CENTER">
<br>*<a href="http://www.urinalpoop.org">urinalpoop< / >*
<br>*<a href="http://www.dolphinsex.org">dolphinsex< / >*
</p>
<hr>
</font>
<img width="0" height="0" src="http://adultfriendfinder.com/go/p47756c">
</body>
</html>
You didn't specify an operating system, price or hardware concerns... If this is something you are researching I would suggest buying a top of the line Apple w/ Photoshop 7 on it. Apples are #1 for multimedia and graphics manipulation.
:)
I've had no problems opening 2400x4000 tiff images in photoshop on my P4 w/ 256MB of ram PC so I would assume a picture 4x bigger wouldn't be a problem. Remember I'm using a PC which is slower at photoshop loading. (The images resolution can also change things... 300 is a lot higher than 72)
I'm suprised you tried GIMP before photoshop. This isn't a 100x100px gif of a dancing penguin you're trying to view
xzgv is the viewer of my choice, it is fast and efficient, it should be able to handle these big files
But I seem to recall hearing from some people who work creating visual effects for movies that Discreet: Combustion is a very good software only solution for working with extremely high resolution images.
It's overkill because of the price, that fact that it is an editing tool, and that it is designed to work with video at higher resolutions than the still pictures you are dealing with, but it would probably work for what you want if you can't find anything else...
Try ImageFX4.0 running on Amithilon!
http://www.novadesign.com/fxinfo.htm
.
(David Bowman, EVA near HUGE Monolithic Win-PC in orbit around Jupiter) "My God - its full of Malware!"
Photoshop does its own VM to handle the memory needed for the image. As far as I remember it needs four times as much disk space than the original picture (this is needed for things like filtering and undo).
I don't know of a cheaper alternative that would do the trick. If I had to write such an app, I would look into mechanisms to install a custom pager that would handle the image data - using the image file as backing store - this is basically what you describe (loading the parts that are needed), but integrated with the VM mechanism.
If the app needs some basic functionality like zooming, things are a little more tricky: lets say you want to dispay a 1/10 zoomed out version of the image, then you need to process the whole file to calculate the reduced image. As this is expensive, you would probably want to cache the result.
This could again be done using a custom pager, that simply clear the memory when the pages are swapped out, and regenerate the needed pages when the memory needs to be swapped in again.
If you decide to write the application yourself, and you are using an Intel architecture, then you might consider using the Intel Image Processing Library.
The library provides a set of low-level image manipulation functions in DLL and static form. A part of the API deals with tiling of big images, so that only the viewable fraction of the image is loaded in the memory. The library comes with a demo app that demonstrates its capabilities including the tiling of images.
http://www.enlightenment.org/pages/imlib2.html
Methinks Rasterman and the Enlightenment team may not have had this in mind, but if they did, it'll work.
That previous post about the VM being important is spot on too.
[% slash_sig_val.text %]
The tiff spec originally used striped chunks of image, ie exactly what you might expect to be dumped directly from the buffer of a fax or scanner. (later they added square tiles, which made it easier to embed jpeg encoded images in tiff). While it is technically possible to encode the whole tiff in a single strip (of compressed image data), thus screwing any attempt at random access, the standard says you shouldnt do this and aims for small strips - in terms of memory.
This has nothing to do with how large the strips are in pixels though. If you viewer wanted to load a 100 pixel square region and the page width is 1M pixels, you will actually be forced to load at least 100x1M pixels into memory.
Bottom line is that in general tiff is a poor format for very large images. And while other image formats are different, they, too, are often not designed for random access to areas of a much larger image. If you really have large images then you should consider storing them in a different format, or even creating a client-server viewer so you don't have to install a gig of ram on the desktop of everyone who wants to look at the image. Depends on your app though. For photoshopping, just add more ram, for a db of x-ray images you would probably want to store images in a format designed for random access to small areas by remote client machines, and various thumnail levels for image navigation.
BTW I deal with A1 scans and I'm pretty sure the (proprietary and fairly crap) image viewer we use takes the client-server approach. I dont speak as an expert in this area but I have written software to convert TIFFs to other formats in the past.
-Baz
It supports just about any file type you can think of including video and audio as well as compressed archives and even scans unrecognized files.
It's available for PC and Mac but the mac version is more limited and slower than the pc counterpart. There's also a slimed down version of the original image viewer that is fast as lightning.
check it out
http://www.acdsystems.com
MoRe... LaTeR... -=PJK=-
While this topic is well outside my usual area of (in)expertise, I think these guys products might be able to help you out... That is, if you were not absolutely tied into the TIFF format for your viewable files. As others have pointed out, TIFFs are a poor format for very large images.
Anyway, LizardTech's technology is used by plces like the USGS and Library of Congress to allow instant access to very large scanned maps and other documents. In particular, you might want to check out their software aimed directly at working with big photos.
Have a look at their Demo. Viewing 0.5G images on your local computer is very impressive.
I've seen a demo of their software in action. An entire CD-ROM (or more) of overlapping images (aerial photography in this case) that were geographically positioned could be viewed using their software. You could pan & zoom in near real time, and this was about 4 years ago! Their software uses wavelet compression.
The software was only on Windows at the time, but according to their download page they have both a browser plug-in and standalone viewer for Linux.
We use the RealTime plugin for one of our websites, and it's ideal for showing large images (we use it for 'Scitex Brisque-Ripped PDF files'). It's got 'notation' and 'color dropper' tools which allows a certain degree of manipulation online. Ok, it's a lil' bit slow on a 56k modem, but a few seconds delay to view a 120Mb PDF file ain't that much!
Check out Remote View. It's a tool designed for really large satellite images, but can be used for a any standard type of image. This tool is optimized for HUGE images upwards of 1GB apiece. I've had a lot of luck with it.
just use the IM display util to screw with your pics.
If you're on an SGI, use the ImageVision libraries/tools. We were using it to process big images (60K x 20K x 5, 16 bits per channel) nearly 10 years ago. It will read as much of the image that is needed and will cache some of the tiles so going back over an area won't require another disk read. If the output is to an SGI video card, some image processing operations will be hardware accellerated. ImageVision homepage
the good ground has been paved over by suicidal maniacs
Regardless of platform, I've successfully dealt with 24x36 inch, 300 ppi CMYK images before... usually movie poster files that had multiple layers, but a flattened tiff should be even easier to work with.
This sig intentionally left justified.
It's also a wavelet system.
The difference is the free ECW SDK can do decompession of any size and compression of images up to 500Mb. If you want to compress larger than 500Mb you have to buy the software.
Last I checked, MrSID's free kit could only decompress, any compression required buying the software.
ECW is a little easier to try out.
ERMapper
-- There is no truth. There is only Perception. To Percieve is to Exist.
If you're on a Wintel platform, Irfanview (www.irfanview.com) is a great freeware tool that can open damn near any format of image (some that other viewers can't) and is a small download. I've opened some pretty dang big images in there (a 42 meg jpeg that was ungodly huge), and it loaded fine (and it can open cmyk images and do basic manipulation, resizing, color adjusting, etc...). I've been using the program since version 1.2 and love it (it's at 3.61) and recommend it to anybody that needs a simple graphic viewer (it's a helluva lot faster than ACDSee).
Ignoranus: A person who is both stupid and an asshole.
Take a look at image viewers for remote sensing and geographic applications which typically deal with images of this size.
OpenEV is one such program I'm familiar with that should do what you need. It supports TIF files. It uses a multiple levels of detail and tile based approach to handle large images. The display uses OpenGL so it's also very quick if you have hardware support (but doesn't suffer much if you don't). Best of all it's under the LGPL licence and runs on Linux, Irix, Sun and Windows.
I've never used it, but you might also want to look at OSSIM which I understand is similar.
Photoshop 6 opens 21600x21600 tiffs in about 2-3 minutes on my athlon 1.3 w/384megs DDR. Once you get it loaded, you can zoom all the way in and out at will with very little lag.
Check out the Blue Marble satellite images from NASA! They're huge and really sweet. You can see individual sand dunes on the Sahara!
Don't Bogart the fish sticks
Is that the kind of thing you had in mind?
If so, cf:
http://www.lizardtech.com/
If you are going to do this sort of thing a lot, don't use TIFF. There are a few tiled formats around for GIS applications, and and hierarchical formats like JPEG2000 or PhotoCD should also be a reasonable choice (but not much tools support yet).
Of course, rather than writing your own, if you really need CMYK, why not add CMYK support to the Gimp? The Gimp already does the tiling and has lots of other useful features.
Its possible that you could utilize one of the source available versions from jpeg.org like jasper as a backend. You can specify cmd line options to get reduced resolution versions from the encoded files. This has the benefit that you'll never have to decode the data for the higher resolutions if you don't need it.
t.
there is a reason why graphics professionals use them. I just pushed a 25000 x 25000 pixel cmyk to test on my G4 400. PS7 b43 under 10.1.3 worked just fine. chunky, but my machine is a few years old. btw thats a 2.3gb file.
I want 2D games back.
Just FYI, Photoshop will support any image up to 30,000x30,000 pixels in size, I've done it personally on a 512MB box.
For 10k^2, and 1GB ram like you say, it shouldn't be a problem (after all 10k^2 CMYK is only 381MB uncompressed).
Stick with an industry standard, full-featured program unless you can't.
MadCow.
I used to have a sig, but I set it free and it never came back.
Look around for Irfanview. Not only is it free, but it does a good job of displaying just about any image format. Of course, at 10k x 10k, even it might choke on the file...I've never tried it with something so large.
BTW: What os?
Ed Wedig
Graphic design services
docbrown.net
It offers some pretty cool tiling caching strategies for displaying large images. We've written an app that opens up images that are in the order of several hundred MB, and it handles them pretty well.
I haven't tried it on anything bigger than 2Kx2K, but it's really an excellent tool.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
When I was doing my undergraduate studies in physics, I was using a program called I.R.A.F. (http://iraf.noao.edu/iraf-homepage.html) to process large astrophysical images. This program doesn't support TIFF (yet) but if you can convert the file format, maybe you could use it to view/manipulate your image. You can download the program from the NOAO page for almost any UNIX flavour.