All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.activiti.explorer.util.ImageUtil Maven / Gradle / Ivy

There is a newer version: 5.23.0
Show newest version
/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.activiti.explorer.util;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.activiti.explorer.Constants;
import org.imgscalr.Scalr;
import org.imgscalr.Scalr.Mode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @author Joram Barrez
 */
public class ImageUtil {
  
  protected static final Logger LOGGER = LoggerFactory.getLogger(ImageUtil.class.getName());

  /**
   * Resizes the given image (passed as {@link InputStream}.
   * If the image is smaller then the given maximum width or height, the image
   * will be proportionally resized.
   */
  public static InputStream resizeImage(InputStream imageInputStream, String mimeType, int maxWidth, int maxHeight) {
    try {
      BufferedImage image = ImageIO.read(imageInputStream);
      
      int width = Math.min(image.getWidth(), maxWidth);
      int height = Math.min(image.getHeight(), maxHeight);
      
      Mode mode = Mode.AUTOMATIC;
      if (image.getHeight() > maxHeight) {
        mode = Mode.FIT_TO_HEIGHT;
      }
      
      if (width != image.getWidth() || height != image.getHeight()) {
        image = Scalr.resize(image, mode, width, height);
      }
      
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      ImageIO.write(image, Constants.MIMETYPE_EXTENSION_MAPPING.get(mimeType), bos);
      return new ByteArrayInputStream(bos.toByteArray());
    } catch (IOException e) {
      LOGGER.error("Exception while resizing image", e);
      return null;
    }
  }
  
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy