comparison common/src/main/java/digilib/image/ImageLoaderDocuImage.java @ 935:776347921bec

fixed slowness of tiff with color profile by loading into srgb.
author robcast
date Wed, 21 Dec 2011 17:02:28 +0100
parents cbfc94584d3b
children 172079f9a398
comparison
equal deleted inserted replaced
934:065dd6895ce7 935:776347921bec
45 45
46 import javax.imageio.IIOImage; 46 import javax.imageio.IIOImage;
47 import javax.imageio.ImageIO; 47 import javax.imageio.ImageIO;
48 import javax.imageio.ImageReadParam; 48 import javax.imageio.ImageReadParam;
49 import javax.imageio.ImageReader; 49 import javax.imageio.ImageReader;
50 import javax.imageio.ImageTypeSpecifier;
50 import javax.imageio.ImageWriteParam; 51 import javax.imageio.ImageWriteParam;
51 import javax.imageio.ImageWriter; 52 import javax.imageio.ImageWriter;
52 import javax.imageio.stream.FileImageInputStream; 53 import javax.imageio.stream.FileImageInputStream;
53 import javax.imageio.stream.ImageInputStream; 54 import javax.imageio.stream.ImageInputStream;
54 import javax.imageio.stream.ImageOutputStream; 55 import javax.imageio.stream.ImageOutputStream;
309 } */ 310 } */
310 reader.setInput(istream); 311 reader.setInput(istream);
311 return reader; 312 return reader;
312 } 313 }
313 314
314 /* Load an image file into the Object. */ 315 /* Load an image file into the Object. */
315 public void loadSubimage(ImageInput ii, Rectangle region, int prescale) 316 public void loadSubimage(ImageInput ii, Rectangle region, int prescale)
316 throws FileOpException { 317 throws FileOpException {
317 logger.debug("loadSubimage"); 318 logger.debug("loadSubimage");
318 this.input = ii; 319 this.input = ii;
319 //ImageReader reader = null; 320 //ImageReader reader = null;
320 try { 321 try {
322 // set up reader parameters 323 // set up reader parameters
323 ImageReadParam readParam = reader.getDefaultReadParam(); 324 ImageReadParam readParam = reader.getDefaultReadParam();
324 readParam.setSourceRegion(region); 325 readParam.setSourceRegion(region);
325 if (prescale > 1) { 326 if (prescale > 1) {
326 readParam.setSourceSubsampling(prescale, prescale, 0, 0); 327 readParam.setSourceSubsampling(prescale, prescale, 0, 0);
328 }
329 // try to restrict target color space to sRGB
330 for (Iterator<ImageTypeSpecifier> i = reader.getImageTypes(0); i.hasNext(); ) {
331 ImageTypeSpecifier type = (ImageTypeSpecifier) i.next();
332 ColorSpace cs = type.getColorModel().getColorSpace();
333 if (cs.isCS_sRGB()) {
334 logger.debug("loadSubimage: substituted sRGB destination type "+type);
335 readParam.setDestinationType(type);
336 break;
337 }
327 } 338 }
328 // read image 339 // read image
329 logger.debug("loading.."); 340 logger.debug("loading..");
330 img = reader.read(0, readParam); 341 img = reader.read(0, readParam);
331 logger.debug("loaded"); 342 logger.debug("loaded");