Advertisement
Guest User

Untitled

a guest
Oct 1st, 2014
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.21 KB | None | 0 0
  1. public void merge() throws IOException, Exception
  2.     {
  3.         List<String> tifs = new ArrayList<>(fileList.keySet());
  4.         Collections.sort(tifs);
  5.  
  6.         for (String key : tifs)
  7.         {
  8.             List<File> files = fileList.get(key);
  9.  
  10.             // Sorter når der et behov for at listen er sorteret, ikke mens der hentes ud
  11.             Collections.sort(files);
  12.  
  13.             int numTifs = files.size();
  14.             BufferedImage image[] = new BufferedImage[numTifs];
  15.             for (File page : files)
  16.             {
  17.                 SeekableStream ss = new FileSeekableStream(page);
  18.                 ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", ss, null);
  19.                 PlanarImage pi = new NullOpImage(decoder.decodeAsRenderedImage(0), null, null, OpImage.OP_IO_BOUND);
  20.                 image[files.indexOf(page)] = pi.getAsBufferedImage();
  21.                 ss.close();
  22.             }          
  23.             TIFFImageReaderSpi tiffReader = new TIFFImageReaderSpi();
  24.             ImageReader reader = tiffReader.createReaderInstance();
  25.             reader.setInput(pageNumbers);
  26.             TIFFImageWriterSpi tiffWriter = new TIFFImageWriterSpi();
  27.             ImageWriter writer = tiffWriter.createWriterInstance();
  28.            
  29.             FileImageOutputStream fileImageOutputStream = new FileImageOutputStream(new File(too.getPath() + "\\" + key + ".tif"));
  30.             writer.setOutput(fileImageOutputStream);
  31.             List<BufferedImage> list = new ArrayList<BufferedImage>(image.length);
  32.             for (int i = 1; i < image.length; i++)
  33.             {
  34.                 list.add(image[i]);
  35.             }
  36. //            params.setExtraImages(list.iterator());
  37. //            encoder.encode(image[0]);
  38. //            out.close();
  39.            
  40.            
  41.             int targetIndex = 0;
  42.             boolean firstPage = true;
  43.             for(int sourceNumber : pageNumbers)
  44.             {
  45.                     IIOMetadata metadata = reader.getImageMetadata(sourceNumber - 1);
  46.                 if (firstPage)
  47.                 {
  48.                     writer.write(null, new IIOImage(reader.readAsRenderedImage(1, null), null, metadata), null);
  49.                 }
  50.                 else
  51.                 {
  52.                     writer.writeInsert(targetIndex++, new IIOImage(reader.readAsRenderedImage(0 , null), null, metadata), null);
  53.                 }
  54.        
  55.             reader.dispose();
  56.             writer.dispose();
  57. //            return this;
  58.             }
  59.  
  60.  
  61. //            TIFFEncodeParam params = new TIFFEncodeParam();
  62. //            params.setCompression(TIFFEncodeParam.COMPRESSION_DEFLATE);
  63. //
  64. //            OutputStream out = new FileOutputStream(too.getPath() + "\\" + key + ".tif");
  65. //            ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out, params);
  66. //            List<BufferedImage> list = new ArrayList<BufferedImage>(image.length);
  67. //            for (int i = 1; i < image.length; i++)
  68. //            {
  69. //                list.add(image[i]);
  70. //            }
  71. //            params.setExtraImages(list.iterator());
  72. //            encoder.encode(image[0]);
  73. //            out.close();        
  74.         }
  75.         JOptionPane.showMessageDialog(rootPane, "Done!");
  76.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement