Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Scales down an image into a box of maxSideLenght x maxSideLength

import java.awt.*; import java.awt.image.BufferedImage; /*  * This file is part of the Caliph and Emir project: http://www.SemanticMetadata.net.  *  * Caliph & Emir 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 2 of the License, or  * (at your option) any later version.  *  * Caliph & Emir 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 Caliph & Emir; if not, write to the Free Software  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  *  * Copyright statement:  * --------------------  * (c) 2002-2006 by Mathias Lux (mathias@juggle.at)  * http://www.juggle.at, http://www.SemanticMetadata.net  */ /**  * Some little helper methods.<br>  * This file is part of the Caliph and Emir project: http://www.SemanticMetadata.net  * <br>Date: 02.02.2006  * <br>Time: 23:33:36  *  * @author Mathias Lux, mathias@juggle.at  */ public class ImageUtils {     /**      * Scales down an image into a box of maxSideLenght x maxSideLength.      * @param image the image to scale down. It remains untouched.      * @param maxSideLength the maximum side length of the scaled down instance. Has to be > 0.      * @return the scaled image, the      */     public static BufferedImage scaleImage(BufferedImage image, int maxSideLength) {         assert(maxSideLength > 0);         double originalWidth = image.getWidth();         double originalHeight = image.getHeight();         double scaleFactor = 0.0;         if (originalWidth > originalHeight) {             scaleFactor = ((double) maxSideLength / originalWidth);         }         else {             scaleFactor = ((double) maxSideLength / originalHeight);         }         // create smaller image         BufferedImage img = new BufferedImage((int) (originalWidth * scaleFactor), (int) (originalHeight * scaleFactor), BufferedImage.TYPE_INT_RGB);         // fast scale (Java 1.4 & 1.5)         Graphics g = img.getGraphics();         g.drawImage(image, 0, 0, img.getWidth(), img.getHeight(), null);         return img;     } }