Package org.photovault.common

Examples of org.photovault.common.PhotovaultException


            instances.remove( deletedInstances.elementAt( i ) );
        }
       
        if ( notDeletedInstances.size() > 0 ) {
            txw.commit();
            throw new PhotovaultException( "Unable to delete some instances of the photo" );
        }

        /*
         All instances were succesfully deleted, so we can delete metadata as well.
         First, delete the photo from all folders it belongs to
View Full Code Here


        log.debug( "Entry: saveInstance, file = " + instanceFile.getAbsolutePath() );
        try {
            out = new FileOutputStream( instanceFile.getAbsolutePath());
        } catch(IOException e) {
            log.error( "Error writing thumbnail: " + e.getMessage() );
            throw new PhotovaultException( e.getMessage() );
        }
        if ( img.getSampleModel().getSampleSize( 0 ) == 16 ) {
            log.debug( "16 bit image, converting to 8 bits");
            double[] subtract = new double[1]; subtract[0] = 0;
            double[] divide   = new double[1]; divide[0]   = 1./256.;
            // Now we can rescale the pixels gray levels:
            ParameterBlock pbRescale = new ParameterBlock();
            pbRescale.add(divide);
            pbRescale.add(subtract);
            pbRescale.addSource( img );
            PlanarImage outputImage = (PlanarImage)JAI.create("rescale", pbRescale, null);
            // Make sure it is a byte image - force conversion.
            ParameterBlock pbConvert = new ParameterBlock();
            pbConvert.addSource(outputImage);
            pbConvert.add(DataBuffer.TYPE_BYTE);
            img = JAI.create("format", pbConvert);
        }
        JPEGEncodeParam encodeParam = new JPEGEncodeParam();
        ImageEncoder encoder = ImageCodec.createImageEncoder("JPEG", out,
                encodeParam);
        try {
            log.debug( "starting JPEG enconde" );
            encoder.encode( img );
            log.debug( "done JPEG encode" );
            out.close();
            // origImage.dispose();
        } catch (Exception e) {
            log.warn( "Exception while encoding" + e.getMessage() );
            throw new PhotovaultException( "Error writing instance " +
                    instanceFile.getAbsolutePath()+ ": " +
                    e.getMessage() );
        }
        log.debug( "Exit: saveInstance" );
    }
View Full Code Here

        }
        if ( original == null ) {
            // If there are no instances, nothing can be exported
            log.warn( "Error - no original image was found!!!" );
            txw.commit();
            throw new PhotovaultException( "No image file found to export photo" );
        }
       
        // Read the image
        RenderedImage exportImage = null;
        try {
            File imageFile = original.getImageFile();
            String fname = imageFile.getName();
            int lastDotPos = fname.lastIndexOf( "." );
            if ( lastDotPos <= 0 || lastDotPos >= fname.length()-1 ) {
                throw new IOException( "Cannot determine file type extension of " + imageFile.getAbsolutePath() );
            }
            PhotovaultImageFactory imageFactory = new PhotovaultImageFactory();
            PhotovaultImage img = null;
            try {
                /*
                 Do not read the image yet since setting raw conversion
                 parameters later may force a re-read.
                 */
                img = imageFactory.create(imageFile, false, false);
            } catch (PhotovaultException ex) {
                log.error( ex.getMessage() );
            }
            img.setCropBounds( this.getCropBounds() );
            img.setRotation( prefRotation - original.getRotated() );
            if ( channelMap != null ) {
                img.setColorAdjustment( channelMap );
            }
            if ( img instanceof RawImage ) {
                RawImage ri = (RawImage) img;
                if ( rawSettings != null ) {
                    ri.setRawSettings( rawSettings );
                } else if ( rawSettings == null ) {
                    // No raw settings for this photo yet, let's use
                    // the thumbnail settings
                    rawSettings = ri.getRawSettings();
                    txw.lock( rawSettings, Transaction.WRITE );
                }
            }
            if ( width > 0 ) {
                exportImage =img.getRenderedImage( width, height, false );
            } else {
                exportImage =img.getRenderedImage( 1.0, false );
            }
        } catch ( Exception e ) {
            log.warn( "Error reading image: " + e.getMessage() );
            txw.abort();
            throw new PhotovaultException( "Error reading image: " + e.getMessage(), e );
        }
               
        // Reduce to 8 bit samples if we have more...
        if ( exportImage.getSampleModel().getSampleSize( 0 ) == 16 ) {
            double[] subtract = new double[1]; subtract[0] = 0;
            double[] divide   = new double[1]; divide[0]   = 1./256.;
            // Now we can rescale the pixels gray levels:
            ParameterBlock pbRescale = new ParameterBlock();
            pbRescale.add(divide);
            pbRescale.add(subtract);
            pbRescale.addSource( exportImage );
            PlanarImage outputImage = (PlanarImage)JAI.create("rescale", pbRescale, null);
            // Make sure it is a byte image - force conversion.
            ParameterBlock pbConvert = new ParameterBlock();
            pbConvert.addSource(outputImage);
            pbConvert.add(DataBuffer.TYPE_BYTE);
            exportImage = JAI.create("format", pbConvert);
        }
       
        // Try to determine the file type based on extension
        String ftype = "jpg";
        String imageFname = file.getName();
        int extIndex = imageFname.lastIndexOf( "." ) + 1;
        if ( extIndex > 0 ) {
            ftype = imageFname.substring( extIndex );
        }
       
        try {
            // Find a writer for that file extensions
            ImageWriter writer = null;
            Iterator iter = ImageIO.getImageWritersByFormatName( ftype );
            if (iter.hasNext()) writer = (ImageWriter)iter.next();
            if (writer != null) {
                ImageOutputStream ios = null;
                try {
                    // Prepare output file
                    ios = ImageIO.createImageOutputStream( file );
                    writer.setOutput(ios);
                    // Set some parameters
                    ImageWriteParam param = writer.getDefaultWriteParam();
                    // if bi has type ARGB and alpha is false, we have
                    // to tell the writer to not use the alpha
                    // channel: this is especially needed for jpeg
                    // files where imageio seems to produce wrong jpeg
                    // files right now...
//                    if (exportImage.getType() == BufferedImage.TYPE_INT_ARGB ) {
//                        // this is not so obvious: create a new
//                        // ColorModel without OPAQUE transparency and
//                        // no alpha channel.
//                        ColorModel cm = new ComponentColorModel(exportImage.getColorModel().getColorSpace(),
//                                false, false,
//                                Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
//                        // tell the writer to only use the first 3 bands (skip alpha)
//                        int[] bands = {0, 1, 2};
//                        param.setSourceBands(bands);
//                        // although the java documentation says that
//                        // SampleModel can be null, an exception is
//                        // thrown in that case therefore a 1*1
//                        // SampleModel that is compatible to cm is
//                        // created:
//                        param.setDestinationType(new ImageTypeSpecifier(cm,
//                                cm.createCompatibleSampleModel(1, 1)));
//                    }
                    // Write the image
                    writer.write(null, new IIOImage(exportImage, null, null), param);
                   
                    // Cleanup
                    ios.flush();
                } finally {
                    if (ios != null) ios.close();
                    writer.dispose();
                    if ( exportImage != null & exportImage instanceof PlanarImage ) {
                        ((PlanarImage)exportImage).dispose();
                        System.gc();
                    }
                }
            }
           
        } catch ( IOException e ) {
            log.warn( "Error writing exported image: " + e.getMessage() );
            txw.abort();
            throw new PhotovaultException( "Error writing exported image: " + e.getMessage(), e );
        }
       
        txw.commit();
    }
View Full Code Here

TOP

Related Classes of org.photovault.common.PhotovaultException

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.