922
|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3 <html xmlns="http://www.w3.org/1999/xhtml">
|
|
4 <head>
|
|
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6 <title>digilib -- Digital Image Library</title>
|
|
7 </head>
|
|
8 <body>
|
|
9 <table border="0" cellspacing="0" cellpadding="10">
|
|
10 <tr>
|
|
11 <td bgcolor="#a0a0a0"> </td>
|
|
12 <td>
|
|
13 <img src="images/digilib-logo-big.png" align="left" />
|
|
14 <h1>
|
|
15 <tt>digilib</tt>
|
|
16 -- a versatile image viewing environment for the internet
|
|
17 </h1>
|
|
18 </td>
|
|
19 </tr>
|
|
20 <tr>
|
|
21 <td bgcolor="#a0a0a0" valign="top" align="right">
|
|
22 <p>
|
|
23 <b><a href="index.html">Info</a>
|
|
24 </b>
|
|
25 </p>
|
|
26 <p>
|
|
27 <b><a href="http://developer.berlios.de/projects/digilib/">Project</a>
|
|
28 </b>
|
|
29 </p>
|
|
30 <p>
|
|
31 <b><a href="http://developer.berlios.de/project/showfiles.php?group_id=251">Download</a>
|
|
32 </b>
|
|
33 </p>
|
|
34 <p>
|
|
35 <b><a href="http://developer.berlios.de/docman/?group_id=251">Docs</a>
|
|
36 </b>
|
|
37 </p>
|
|
38 <p>
|
|
39 <b><a href="tips.html">Tips</a>
|
|
40 </b>
|
|
41 </p>
|
|
42 <p>
|
|
43 <b><a href="http://hg.berlios.de/repos/digilib">Source</a>
|
|
44 </b>
|
|
45 </p>
|
|
46 </td>
|
|
47 <td>
|
|
48
|
|
49
|
|
50 <p>Some tips for running digilib</p>
|
|
51 <ul>
|
|
52 <li>
|
|
53 <a href="#vm_settings">Java VM settings for digilib</a>
|
|
54 </li>
|
|
55 <li>
|
|
56 <a href="#prescaled_images">Prescaled images</a>
|
|
57 </li>
|
|
58 <li>
|
|
59 <a href="installing_jai">Installing JAI</a>
|
|
60 </li>
|
|
61 </ul>
|
|
62
|
|
63 <h1 id="vm_settings">Java VM settings for digilib</h1>
|
|
64
|
|
65 <p>The Java virtual machine (Java-VM) only uses a fixed amount of memory for
|
|
66 its operations. When an operation needs more memory than available it aborts
|
|
67 with an error ("out of memory error").</p>
|
|
68 <p>digilib can need a lot of memory depending on the size and type of images.
|
|
69 Since digilib runs as a servlet under Tomcat its in the same VM as the Tomcat
|
|
70 server.</p>
|
|
71 <p>The amount of memory Tomcat (version 5.0) uses is configured by creating a
|
|
72 "setenv.sh" script with a line</p>
|
|
73 <pre> CATALINA_OPTS="-Xmx512m"
|
|
74 </pre>
|
|
75 <p>in Tomcat's "bin" directory (giving 512MB in this case).</p>
|
|
76 <p>
|
|
77 You can check the amount of memory your digilib instance has available on the
|
|
78 bottom of the web page /server/dlConfig.jsp in your digilib instance (e.g. <a
|
|
79 href="http://digilib.mpiwg-berlin.mpg.de/digitallibrary/server/dlConfig.jsp"
|
|
80 class="external free" rel="nofollow">http://digilib.mpiwg-berlin.mpg.de/digitallibrary/server/dlConfig.jsp</a>).
|
|
81 </p>
|
|
82
|
|
83 <h1 id="prescaled_images">Prescaled images</h1>
|
|
84
|
|
85 <p>You can provide any number of scaled-down versions of your images that
|
|
86 digilib uses when a smaller version of an image is requested. Since less data
|
|
87 has to be read and processed this can speed up digilib's performance quite a
|
|
88 lot.</p>
|
|
89 <p>The actual process is that the client requests a certain target size,
|
|
90 digilib scans all available scaled-down versions of the same image, selects the
|
|
91 smallest image that is larger than the requested size and scales it down to the
|
|
92 requested size.</p>
|
|
93 <p>The scaled-down versions of the image have to have the same file name as
|
|
94 the original hi-res file. They can have a different type and extension (e.g.
|
|
95 img002.jpg for img002.TIFF)</p>
|
|
96 <p>The scaled down images have to be in the same subdirectory (the part that
|
|
97 shows up in digilib's "fn" parameter) as the hi-res file. The first part of each
|
|
98 directory tree is configured by the basedir-list parameter in
|
|
99 digilib-config.xml.</p>
|
|
100 <p>The sequence of directories in basedir-list is from hi-res to lo-res.
|
|
101 Images must be present in the hires directory but they need not be present in
|
|
102 all lower-res directories.</p>
|
|
103 <p>e.g. if digilib-config.xml contains</p>
|
|
104 <pre> <parameter name="basedir-list" value="/images:/scaled:/thumb" />
|
|
105 </pre>
|
|
106 <p>and a user requests the image "books/book1/page0002" digilib looks for</p>
|
|
107 <pre> /thumb/books/book1/page0002.*
|
|
108 /scaled/books/book1/page002.*
|
|
109 /images/books/book1/page002.*
|
|
110 </pre>
|
|
111 <p>and uses the first image that is bigger than or equal to the requested
|
|
112 size.</p>
|
|
113 <p>
|
|
114 For batch-prescaling our images we use a script called "scale-o-mat" that uses a
|
|
115 lot of freely available imaging libraries (ImageMagick, libtiff, netpbm) and is
|
|
116 available in our public CVS <a
|
|
117 href="http://itgroup.mpiwg-berlin.mpg.de/cgi-bin/cvsweb.cgi/scaleomat/"
|
|
118 class="external autonumber" rel="nofollow">[1]</a>. The script is given a
|
|
119 hi-res base directory, a destination base directory, a destination size and a
|
|
120 starting directory. It then processes all files in the starting directory and
|
|
121 all its subdirectories and creates scaled images in corresponding directories
|
|
122 under the destination base directory.
|
|
123 </p>
|
|
124 <p>We currently use prescaled thumbnails of 100 pixels and images for browser
|
|
125 display of 1500 pixels. Remember that the prescaled image has to be larger (or
|
|
126 the same size) than the requested image size!</p>
|
|
127 <p>There is another optimization in digilib: if the requested image is exactly
|
|
128 the same size and type as the prescaled image then the prescaled image is sent
|
|
129 unmodified to the client which is a lot faster. So it makes sense to produce
|
|
130 thumbnails of exactly 90 pixels width when they are used in an HTML page where
|
|
131 all images are 90 pixels wide.</p>
|
|
132
|
|
133
|
|
134 <h1 id="installing_jai">Installing JAI</h1>
|
|
135
|
|
136 <p>
|
|
137 In principle you can install the <a
|
|
138 href="http://java.sun.com/javase/technologies/desktop/media/jai/"
|
|
139 class="external text" rel="nofollow">Java Advanced Imaging</a> JAR files (and
|
|
140 native library files if available) in the /WEB-INF/lib/ directory of the digilib
|
|
141 web application.
|
|
142
|
|
143 </p>
|
|
144 <p>I found that in some cases digilib stopped reading TIFF files after a
|
|
145 period of running. In these cases it helped to install the JAI files directly in
|
|
146 the local Java installation (i.e. in the Java's /jre/lib/ext/ directory on
|
|
147 linux).</p>
|
|
148
|
|
149
|
|
150 <h1 id="mpiwg_setup">Sample setup</h1>
|
|
151
|
|
152 <p>The current digilib setup at the MPIWG (as of November 2005):</p>
|
|
153 <ul>
|
|
154 <li>
|
|
155 One frontend server running the lightweight web-multiplexer <a
|
|
156 href="http://www.apsis.ch/pound/" class="external text" rel="nofollow">pound</a>
|
|
157 on port 80 that distributes requests to two servers runnning digilib
|
|
158 </li>
|
|
159 <li>
|
|
160 the two servers run digilib under <a
|
|
161 href="http://tomcat.apache.org/index.html" class="external text"
|
|
162 rel="nofollow">Tomcat</a> on port 8080 without Apache
|
|
163 <ul>
|
|
164 <li>one server is the same machine as the frontend server (Linux, Dual
|
|
165 2.4GHz Xeon, 2GB RAM)</li>
|
|
166 <li>the other server is a separate, newer machine (Linux, Dual 1.8GHz
|
|
167 Opteron, 2GB RAM)</li>
|
|
168 </ul>
|
|
169 </li>
|
|
170 <li>
|
|
171 the digilib instances (digilib 1.5.9c as of 22.11.2005) run on Tomcat on Java
|
|
172 1.5.0_05 (or 1.4.2_06) with 1GB of <a href="#vm_settings">Java VM memory
|
|
173 for digilib</a> (-Xmx1024m) with JAI (1.1.2_01) and JAI-ImageIO (1.0_01) <a
|
|
174 href="#installing_jai">installed in the JRE</a>(!)
|
|
175 </li>
|
|
176 <li>both digilib servers access all image files over NFS (over GBit
|
|
177 Ethernet) from a central file server (Solaris 8, Sun Fire 480, multiple RAIDs
|
|
178 on Fibrechannel)</li>
|
|
179 </ul>
|
|
180
|
|
181 </td>
|
|
182 </tr>
|
|
183 <tr>
|
|
184 <td style="padding: 0px" align="left">
|
|
185 <a href="http://developer.berlios.de"> <img
|
|
186 src="http://developer.berlios.de/bslogo.php?group_id=0&type=1" width="124"
|
|
187 height="32" border="0" alt="BerliOS Logo" /> </a>
|
|
188 </td>
|
|
189 <td></td>
|
|
190 </tr>
|
|
191 </table>
|
|
192
|
|
193 </body>
|
|
194 </html> |