Package er.attachment.thumbnail

Source Code of er.attachment.thumbnail.ERImageProcessor

package er.attachment.thumbnail;

import java.io.File;
import java.io.IOException;

import org.apache.log4j.Logger;

import er.attachment.utils.ERMimeType;
import er.attachment.utils.ERMimeTypeManager;
import er.extensions.foundation.ERXExceptionUtilities;
import er.extensions.foundation.ERXProperties;

/**
* ImageProcessor is a common superclass of all IImageProcessor
* implementations.
*
* @property er.attachment.thumbnail.imageProcessor
*
* @author mschrag
*/
public abstract class ERImageProcessor implements IERImageProcessor {
  public static final Logger log = Logger.getLogger(ERImageProcessor.class);

  public static volatile IERImageProcessor _imageProcessor;

  /**
   * Returns the best IImageProcesor to use in your environment.
   *
   * @return the best IImageProcesor to use in your environment
   */
  public static IERImageProcessor imageProcessor() {
    IERImageProcessor imageProcessor = _imageProcessor;
    if (imageProcessor == null) {
      synchronized (IERImageProcessor.class) {
        if (imageProcessor == null) {
          String imageProcessorKey = ERXProperties.stringForKey("er.attachment.thumbnail.imageProcessor");
          if (imageProcessorKey != null) {
            // ... add a registry of these at some point
            if ("sips".equals(imageProcessorKey)) {
              imageProcessor = new SipsImageProcessor();
            }
            else if ("imageio".equals(imageProcessorKey)) {
              imageProcessor = ImageIOImageProcessor.imageIOImageProcessor();
            }
            else if ("imagemagick".equals(imageProcessorKey)) {
              try {
                imageProcessor = ImageMagickImageProcessor.imageMagickImageProcessor();
              }
              catch (Throwable t) {
                throw new RuntimeException("Failed to load ImageMagick image processor.", t);
              }
            }
            else if ("java".equals(imageProcessorKey)) {
              imageProcessor = new Java2DImageProcessor();
            }
            else {
              throw new IllegalArgumentException("Unknown image processor '" + imageProcessorKey + "'.");
            }
          }
          else {
            // Try ImageIO ...
            try {
              imageProcessor = ImageIOImageProcessor.imageIOImageProcessor();
            }
            catch (Throwable t) {
              // ... failure in the constructor means the lib doesn't exist
              log.warn("Cannot use ImageIOProcessor: " + ERXExceptionUtilities.toParagraph(t));
            }
 
            // Try ImageMagick ...
            if (imageProcessor == null) {
              try {
                imageProcessor = ImageMagickImageProcessor.imageMagickImageProcessor();
              }
              catch (Throwable t) {
                log.warn("Cannot use ImageMagickImageProcessor: " + ERXExceptionUtilities.toParagraph(t));
              }
            }
 
            // ... and the fallback to Java2D
            if (imageProcessor == null) {
              imageProcessor = new Java2DImageProcessor();
            }
          }

          _imageProcessor = imageProcessor;
        }
      }
    }

    return imageProcessor;
  }

  /**
   * Provides a shortcut to thumbnailing an image using some default values that produce
   * decent quality thumbnail outputs.
   *
   * @param resizeWidth the maximum resize width
   * @param resizeHeight the maximum resize height
   * @param inputFile the input file to thumbnail
   * @param outputFile the output file to write the thumbnail into
   * @throws IOException if the thumbnailing fails
   */
  public void thumbnail(int resizeWidth, int resizeHeight, File inputFile, File outputFile) throws IOException {
    ERMimeType outputMimeType = ERMimeTypeManager.mimeTypeManager().mimeTypeForFile(outputFile, true);
    thumbnail(resizeWidth, resizeHeight, inputFile, outputFile, outputMimeType);
  }
 
  /**
   * Provides a shortcut to thumbnailing an image using some default values that produce
   * decent quality thumbnail outputs.
   *
   * @param resizeWidth the maximum resize width
   * @param resizeHeight the maximum resize height
   * @param inputFile the input file to thumbnail
   * @param outputFile the output file to write the thumbnail into
   * @param outputMimeType the output mime type
   * @throws IOException if the thumbnailing fails
   */
  public void thumbnail(int resizeWidth, int resizeHeight, File inputFile, File outputFile, ERMimeType outputMimeType) throws IOException {
    processImage(resizeWidth, resizeHeight, null, -1, 2.5f, 0.35f, 0.0f, -1, -1, -1, -1, null, false, 0.9f, null, inputFile, outputFile, outputMimeType);
  }
}
TOP

Related Classes of er.attachment.thumbnail.ERImageProcessor

TOP
Copyright © 2018 www.massapi.com. 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.