How Do I Create Zoomify Tiles on the Server?
Hello,
I'm intern on a small company who's sell a CMS for museum.
My goal is to port this CMS in PHP to make it Open Source.
My only constraint: Use Zoomify tiles format for showing big (I mean really big) images because it's the most supported, with a server-side converter able to be handle by PHP.
By the way I've try many solution to convert images, but none of them helped me.
The converter I got from Zoomifyer Enterprise Edition is an executable, I've found a Python (old Open Source script by Zoomify) and a PHP script. And all thoses solutions have defects:
- Zoomify exe is only for Win32 platerform and hard to use withing PHP without create some timeout and other kind of problem.
- Both Python and PHP can't handle big image converting on my (personal) Linux box.
I'm really enjoy your viewer. He's simple and beautiful but I got always same problem: I can't convert images in Zoomify format.
I've try to understand how tiles (and zoom levels) are created, but maths are not my friend.
So my questions are:
- Is "Python Deep Zoom Tools" able to handle big image and Zoomify style tiles ?
- Is someone ever try a cross-platerform, server-side, (mostly) automated converting solution ?
- Where can I found the "pyramid" logic used by Zoomify to create zoom levels ?
By the way: thanks for help and Big Thanks for OpenZoom viewer!
I'm intern on a small company who's sell a CMS for museum.
My goal is to port this CMS in PHP to make it Open Source.
My only constraint: Use Zoomify tiles format for showing big (I mean really big) images because it's the most supported, with a server-side converter able to be handle by PHP.
By the way I've try many solution to convert images, but none of them helped me.
The converter I got from Zoomifyer Enterprise Edition is an executable, I've found a Python (old Open Source script by Zoomify) and a PHP script. And all thoses solutions have defects:
- Zoomify exe is only for Win32 platerform and hard to use withing PHP without create some timeout and other kind of problem.
- Both Python and PHP can't handle big image converting on my (personal) Linux box.
I'm really enjoy your viewer. He's simple and beautiful but I got always same problem: I can't convert images in Zoomify format.
I've try to understand how tiles (and zoom levels) are created, but maths are not my friend.
So my questions are:
- Is "Python Deep Zoom Tools" able to handle big image and Zoomify style tiles ?
- Is someone ever try a cross-platerform, server-side, (mostly) automated converting solution ?
- Where can I found the "pyramid" logic used by Zoomify to create zoom levels ?
By the way: thanks for help and Big Thanks for OpenZoom viewer!
1
person has this question
I have this question, too!
Tell me when someone answers.
The more people who ask this question, the more it gets noticed.
The more people who ask this question, the more it gets noticed.
The company marked this question as answered.
-
Inappropriate?Meuhlavache,
Thanks for writing. I understand your frustrations but dealing with extremes – such as really large images – in Computer Science is always hard.
Bad News
The bad news is that the Python Deep Zoom Tools do for one not support the Zoomify tile structure but rather the Microsoft Deep Zoom Image format (which is a great format in itself and even simpler than Zoomify) and two the tools are probably not well suited for converting really large images.
Good News
However, the Zoomify file format is fairly simple to understand. Basically, you take the input image slice it into 256x256px (default) tiles and then divide both the width and height of the original image by two (check with original converter whether it rounds the dimensions up or down) to get the next pyramid level. Then you proceed from there on. It's a recursive algorithm (although I wouldn't necessarily implement it recursively). You stop as soon as either the width or the height of your image is smaller than the dimensions of your tile (256px).
All you need to then, is to store the tiles according to the naming scheme level-column-row into a folder named TileGroupX (where X marks the index) until it reaches the number of 256 tiles per folder. After that you increase the index of the tile group folder.
One way to understand the (simple) math is to study the ZoomifyDescriptor I've created within the OpenZoom SDK. Basically, the descriptor works the other way around by trying to read the format while you'll have to create that format. With the ZoomifyDescriptor and by comparing your output to the official Zoomify product's output you can verify that you're doing everything right.
ZoomifyDescriptor
http://code.google.com/p/open-zoom/so...
Two libraries you might have a look at for large image processing are:
netpbm
http://netpbm.sourceforge.net/
VIPS
http://www.vips.ecs.soton.ac.uk/index...
Good luck and have fun!
–Daniel
P.S. If you come up with something consider sharing it with the community :)
The company and 1 other person say
this answers the question
-
Inappropriate?First: thanks!
Your answer was so fast and well explain, that I can't believe my eyes! :)
I've been searching for long time and missing the elephant in the corridor (too simple to believe this is the solution).
Now I need to find a way to handle big image... Did you have any idea on how can I do this? What kind of language will be able to allow this kind of processing.
I’m thankful but a little bit anxious
-
Inappropriate?Meuhlavache,
Happy to help you out! As I mentioned, have a look at those two libraries netpbm as well as VIPS. I believe they have many language bindings so if you're familiar with PHP I would go with that if possible. If the library you're using can handle images larger than the amount of RAM you've got it probably doesn't matter what language you use to control it.
By the way, if you don't really have to worry about backwards compatibility, consider writing a tool for converting images to the Deep Zoom Image format. It's an even simpler format (scale down until 1x1px tile and store tiles in paths level/column_row.extension), gives you super-smooth rendering, stellar support for large image collections (http://memorabilia.hardrock.com/) as well as the fact that it has already a large set of technologies for rendering:
Seadragon Ajax (JavaScript)
Silverlight Deep Zoom (Silverlight)
Seadragon Mobile (iPhone/iPod touch)
OpenZoom (Flash)
You can find the corresponding information at:
Documentation
http://msdn.microsoft.com/en-us/library/cc645077(VS.95).aspx
http://gasi.ch/blog/inside-deep-zoom-2/
Descriptor
http://code.google.com/p/open-zoom/so...
Reference Implementation
http://code.google.com/p/open-zoom/so...
http://blogs.msdn.com/expression/arch...
Cheers,
Daniel
I’m excited
1 person says
this answers the question
-
Inappropriate?"Hey, i'm not feeling anxious anymore"!
Thanks again... I can now sleep smarter!
I’m happy and thankful
Loading Profile...



EMPLOYEE