Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Fit Image

//  Ahy - A pure java CMS. //  Copyright (C) 2010 Sidney Leal (manish.com.br) // //  This program is free software: you can redistribute it and/or modify //  it under the terms of the GNU General Public License as published by //  the Free Software Foundation, either version 3 of the License, or //  (at your option) any later version. // //  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 General Public License for more details. // //  You should have received a copy of the GNU General Public License //  along with this program.  If not, see <http://www.gnu.org/licenses/>. //package br.com.manish.ahy.kernel.util; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import javax.imageio.ImageIO; public final class ImageUtil {     public static ByteArrayOutputStream fit(ByteArrayInputStream bais, int width, int height) throws IOException {          BufferedImage src = ImageIO.read(bais);         int newWidth;         int newHeight;                  Float scale;         if (src.getWidth() > src.getHeight()) {             scale = Float.valueOf(width) / Float.valueOf(src.getWidth());         } else {             scale = Float.valueOf(height) / Float.valueOf(src.getHeight());         }                  newWidth = Float.valueOf(src.getWidth() * scale).intValue();         newHeight = Float.valueOf(src.getHeight() * scale).intValue();        // System.out.println("--- " + src.getWidth() + " - " + width);        // System.out.println("--- " + src.getHeight() + " - " + height);        // System.out.println("--- " + scale + " -- " + Float.valueOf(src.getWidth() * scale).intValue() + " -- " + Float.valueOf(src.getHeight() * scale).intValue());                  BufferedImage temp = scale(src, newWidth, newHeight);         ByteArrayOutputStream baos = new ByteArrayOutputStream();         ImageIO.write(temp,"JPG", baos);                  return baos;     }     public static ByteArrayOutputStream scale(ByteArrayInputStream bais, int width, int height) throws IOException {         BufferedImage src = ImageIO.read(bais);         BufferedImage dest = scale(src, width, height);         ByteArrayOutputStream baos = new ByteArrayOutputStream();         ImageIO.write(dest,"JPG", baos);         return baos; } public static BufferedImage scale(BufferedImage src, int width, int height) throws IOException {     BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);     Graphics2D g = dest.createGraphics();     AffineTransform at = AffineTransform.getScaleInstance(             (double)width/src.getWidth(),             (double)height/src.getHeight());     g.drawRenderedImage(src,at);             return dest; } }