Package org.infoglue.cms.util.graphics

Source Code of org.infoglue.cms.util.graphics.Imaging

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/

package org.infoglue.cms.util.graphics;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;

import org.apache.log4j.Logger;
import org.infoglue.cms.applications.managementtool.actions.ConfirmAction;

import com.thebuzzmedia.imgscalr.Scalr;
import com.thebuzzmedia.imgscalr.Scalr.Mode;

/**
* An generic wrapper for all image-handling logic. Currently uses simple classes and standard java-api:s.
*
* @author mattias.bogeblad@gmail.com
*/

public class Imaging
{
  private final static Logger logger = Logger.getLogger(Imaging.class.getName());

  public static void main(String[] args)
  {
        try
        {
      BufferedImage image = javax.imageio.ImageIO.read(new File("/logs/orginal.jpg"));
      BufferedImage scaledImage = Scalr.resize(image, 60);
      javax.imageio.ImageIO.write(scaledImage, "JPG", new File("/logs/output1.jpg"));
      BufferedImage image2 = javax.imageio.ImageIO.read(new File("/logs/orginal2.png"));
      BufferedImage scaledImage2 = Scalr.resize(image2, 60);
      javax.imageio.ImageIO.write(scaledImage2, "PNG", new File("/logs/output2.png"));

      BufferedImage image3 = javax.imageio.ImageIO.read(new File("/logs/orginal2.png"));
      BufferedImage croppedImage3 = image3.getSubimage(300, 200, 600, 300);
      javax.imageio.ImageIO.write(croppedImage3, "PNG", new File("/logs/output3.png"));
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

  public static void resize(File input, File output, int width, int height, String format, boolean constrainProportions) throws Exception
  {
    resize(input, output, width, height, format, constrainProportions, 100);
  }

  public static void resize(File input, File output, int width, int height, String format, boolean constrainProportions, float quality) throws Exception
  {
    if(quality > 1)
      quality = quality / 100;
   
    BufferedImage image = javax.imageio.ImageIO.read(input);
   
    Mode mode = Mode.AUTOMATIC;
    if(height <= 0)
    {
      height = width;
      mode = Mode.FIT_TO_WIDTH;
    }
    if(width <= 0)
    {
      width = height;   
      mode = Mode.FIT_TO_HEIGHT;
    }
   
    logger.info("image:" + image.getType() + ":" + BufferedImage.TYPE_CUSTOM);
    if(image.getType() == BufferedImage.TYPE_CUSTOM)
    {
      BufferedImage image_to_save2=new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_RGB);
          image_to_save2.getGraphics().drawImage(image,0,0,null);
          image = image_to_save2;
    }
   
    BufferedImage scaledImage = null;
    if(constrainProportions)
    {     
      scaledImage = Scalr.resize(image, mode, width, height);
      //scaledImage = Scalr.resize(image, width, height);
    }
    else
    {
      scaledImage = Scalr.resize(image, width, height);
    }
   
    //javax.imageio.ImageIO.write(scaledImage, format, output);
   
    Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
    ImageWriter writer = (ImageWriter)iter.next();
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwp.setCompressionQuality(quality);
   
    //output.getParentFile().mkdirs();
    FileImageOutputStream outputStream = new FileImageOutputStream(output);
    writer.setOutput(outputStream);
    IIOImage ioImage = new IIOImage(scaledImage, null, null);
    writer.write(null, ioImage, iwp);
    writer.dispose();
  }

  public static void crop(File input, File output, int x, int y, int width, int height, String format) throws Exception
  {
    BufferedImage image = javax.imageio.ImageIO.read(input);
   
    BufferedImage croppedImage = image.getSubimage(x, y, width, height);
   
    javax.imageio.ImageIO.write(croppedImage, format, output);
  }

}
TOP

Related Classes of org.infoglue.cms.util.graphics.Imaging

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.