Monday, 27 June 2016

MultiPage Tiff file creation from multiple file upload for multiple formats.

Tiff files are genrally used for the compact size and good quality of images.
This is an example for jpeg , the same can be used for png and tiff as well.

Below code would accept a multipart file list and merge all files to create a single multipage -tiff file.

    public File mergeTiffFiles(List<MultipartFile> fileList) {
        File file = null;
        File convertedFile = null;
        try {
            int counter = 0;
            BufferedImage image[] = new BufferedImage[fileList.size()];
            for (MultipartFile imageFile : fileList) {
                convertedFile = convert(imageFile);
                SeekableStream sstream = new FileSeekableStream(convertedFile);
                ImageDecoder decoder = ImageCodec.createImageDecoder("jpeg",
                        sstream, null);
                PlanarImage pi = new NullOpImage(
                        decoder.decodeAsRenderedImage(0), null, null,
                        OpImage.OP_IO_BOUND);
                image[counter] = pi.getAsBufferedImage();
                counter++;
                sstream.close();
            }
            TIFFEncodeParam params = new TIFFEncodeParam();
            params.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
            file = new File("sourcePath");
            OutputStream out = new FileOutputStream(file);
            ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", out,
                    params);
            List<BufferedImage> list = new ArrayList<BufferedImage>(
                    image.length);
            for (int i = 1; i < image.length; i++) {
                list.add(image[i]);
            }
            params.setExtraImages(list.iterator());
            encoder.encode(image[0]);
            out.close();
            if (convertedFile.delete()) {
                logger.debug(convertedFile.getName() + " is deleted!");
            } else {
                logger.debug("Delete operation is failed. "
                        + convertedFile.getName());
            }

        } catch (IOException e) {
            logger.error("Exception ");

        } catch (Exception e) {
            logger.error("Exception ");

        }

        return file;

    }



Here also to convert a multipart file object to a File object


 public File convert(MultipartFile file)
         {   
             File convFile = new File("sourcePath");
             try {
                convFile.createNewFile();
                 FileOutputStream fos = new FileOutputStream(convFile);
                 fos.write(file.getBytes());
                 fos.close();
                 return convFile;
            } catch (IOException e) {
               
                e.printStackTrace();
            }
            return convFile;
           
         }

No comments:

Post a Comment

AWS Certificate Manager - Import Certificate

How to import a certificate. Use Key Store Explorer to open the cert and export keypair in PEM format  This will save a file cert.pem. Make ...