com.silverpeas.util.ImageUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.silverpeas.util.ImageUtil.java

Source

/**
 * Copyright (C) 2000 - 2013 Silverpeas
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU Affero General Public License as published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * As a special exception to the terms and conditions of version 3.0 of the GPL, you may
 * redistribute this Program in connection with Free/Libre Open Source Software ("FLOSS")
 * applications as described in Silverpeas's FLOSS exception. You should have received a copy of the
 * text describing the FLOSS exception, and it is also available here:
 * "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License along with this program.
 * If not, see <http://www.gnu.org/licenses/>.
 */
package com.silverpeas.util;

import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.apache.commons.io.IOUtils;

import com.stratelia.silverpeas.silvertrace.SilverTrace;

public class ImageUtil {

    // Extension of bmp image file
    public static final String BMP_IMAGE_EXTENSION = "bmp";
    // Extension of gif image file
    public static final String GIF_IMAGE_EXTENSION = "gif";
    // Extension of jpg image file
    public static final String JPG_IMAGE_EXTENSION = "jpg";
    // Extension of jepg image file
    public static final String JPEG_IMAGE_EXTENSION = "jpeg";
    // Extension of pcd image file
    public static final String PCD_IMAGE_EXTENSION = "pcd";
    // Extension of png image file
    public static final String PNG_IMAGE_EXTENSION = "png";
    // Extension of psd document/image file
    public static final String PSD_IMAGE_EXTENSION = "psd";
    // Extension of tga image file
    public static final String TGA_IMAGE_EXTENSION = "tga";
    // Extension of tif image file
    public static final String TIF_IMAGE_EXTENSION = "tif";
    public static final String[] IMAGE_EXTENTIONS = new String[] { BMP_IMAGE_EXTENSION, GIF_IMAGE_EXTENSION,
            JPG_IMAGE_EXTENSION, JPEG_IMAGE_EXTENSION, PCD_IMAGE_EXTENSION, PNG_IMAGE_EXTENSION,
            TGA_IMAGE_EXTENSION, TIF_IMAGE_EXTENSION };

    public static String[] getWidthAndHeightByWidth(File image, int widthParam) {
        String[] result = new String[2];
        if (image != null && image.isFile()) {
            InputStream in = null;
            try {
                in = new BufferedInputStream(new FileInputStream(image));
                return getWidthAndHeightByWidth(in, widthParam);
            } catch (Exception e) {
                if (image != null) {
                    SilverTrace.error("util", "ImageUtil.getWidthAndHeightByWidth", "root.MSG_GEN_ERROR",
                            "File not found : " + image.getAbsolutePath());
                }
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
        result[0] = "";
        result[1] = "";
        return result;
    }

    public static String[] getWidthAndHeightByWidth(InputStream image, int widthParam) {
        String[] result = new String[2];
        try {
            BufferedImage inputBuf = ImageIO.read(image);
            // calcul de la taille de la sortie
            double inputBufWidth;
            double inputBufHeight;
            double width;
            double ratio;
            double height;
            if (inputBuf.getWidth() > widthParam) {
                inputBufWidth = inputBuf.getWidth();
                inputBufHeight = inputBuf.getHeight();
                width = widthParam;
                ratio = inputBufWidth / width;
                height = inputBufHeight / ratio;
            } else {
                width = inputBuf.getWidth();
                height = inputBuf.getHeight();
            }
            String sWidth = Double.toString(width);
            String sHeight = Double.toString(height);

            result[0] = sWidth.substring(0, sWidth.indexOf('.'));
            result[1] = sHeight.substring(0, sHeight.indexOf('.'));

            return result;
        } catch (Exception e) {
            if (image != null) {
                SilverTrace.error("util", "ImageUtil.getWidthAndHeightByWidth", "root.MSG_GEN_ERROR", e);
            }
        }
        result[0] = "";
        result[1] = "";
        return result;
    }

    public static String[] getWidthAndHeightByHeight(File image, int heightParam) {
        String[] result = new String[2];
        if (image != null && image.isFile()) {
            InputStream in = null;
            try {
                in = new BufferedInputStream(new FileInputStream(image));
                return getWidthAndHeightByHeight(in, heightParam);
            } catch (Exception e) {
                if (image != null) {
                    SilverTrace.error("util", "ImageUtil.getWidthAndHeightByHeight", "root.MSG_GEN_ERROR",
                            "File not found : " + image.getAbsolutePath());
                }
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
        result[0] = "";
        result[1] = "";
        return result;
    }

    public static String[] getWidthAndHeightByHeight(InputStream image, int heightParam) {
        String[] result = new String[2];
        try {
            BufferedImage inputBuf = ImageIO.read(image);
            // calcul de la taille de la sortie
            double inputBufWidth;
            double inputBufHeight;
            double height;
            double ratio;
            double width;
            if (inputBuf.getHeight() > heightParam) {
                inputBufHeight = inputBuf.getHeight();
                inputBufWidth = inputBuf.getWidth();
                height = heightParam;
                ratio = inputBufHeight / height;
                width = inputBufWidth / ratio;
            } else {
                height = inputBuf.getHeight();
                width = inputBuf.getWidth();
            }
            String sWidth = Double.toString(width);
            String sHeight = Double.toString(height);

            result[0] = sWidth.substring(0, sWidth.indexOf('.'));
            result[1] = sHeight.substring(0, sHeight.indexOf('.'));

            return result;
        } catch (Exception e) {
            SilverTrace.error("util", "ImageUtil.getWidthAndHeightByHeight", "root.MSG_GEN_ERROR", e);
        }
        return result;
    }

    public static String[] getWidthAndHeight(InputStream image) {
        String[] result = new String[2];
        try {
            BufferedImage inputBuf = ImageIO.read(image);
            // calcul de la taille de la sortie
            double inputBufWidth = inputBuf.getWidth();
            double inputBufHeight = inputBuf.getHeight();
            String sWidth = Double.toString(inputBufWidth);
            String sHeight = Double.toString(inputBufHeight);

            result[0] = sWidth.substring(0, sWidth.indexOf('.'));
            result[1] = sHeight.substring(0, sHeight.indexOf('.'));

            return result;
        } catch (Exception e) {
            if (image != null) {
                SilverTrace.error("util", "ImageUtil.getWidthAndHeightByHeight", "root.MSG_GEN_ERROR", e);
            }
        }
        result[0] = "";
        result[1] = "";
        return result;
    }

    public static String[] getWidthAndHeight(File image) {
        String[] result = new String[2];
        if (image != null && image.isFile()) {
            InputStream in = null;
            try {
                in = new BufferedInputStream(new FileInputStream(image));
                return getWidthAndHeight(in);
            } catch (Exception e) {
                if (image != null) {
                    SilverTrace.error("util", "ImageUtil.getWidthAndHeight", "root.MSG_GEN_ERROR",
                            "File not found : " + image.getAbsolutePath());
                }
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
        result[0] = "";
        result[1] = "";
        return result;
    }
}