Here you can find the source of getScaledImage(Image image, int maxWidth, int maxHeight)
public static java.awt.Image getScaledImage(Image image, int maxWidth, int maxHeight)
//package com.java2s; /*/*from www. j a v a 2s . co m*/ * JStock - Free Stock Market Software * Copyright (C) 2012 Yan Cheng CHEOK <yccheok@yahoo.com> * * 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 2 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, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ import java.awt.Image; import javax.swing.ImageIcon; public class Main { public static java.awt.Image getScaledImage(Image image, int maxWidth, int maxHeight) { // This code ensures that all the pixels in the image are loaded image = new ImageIcon(image).getImage(); final int imgWidth = image.getWidth(null); final int imgHeight = image.getHeight(null); final int preferredWidth = Math.min(imgWidth, maxWidth); final int preferredHeight = Math.min(imgHeight, maxHeight); final double scaleX = (double) preferredWidth / (double) imgWidth; final double scaleY = (double) preferredHeight / (double) imgHeight; final double bestScale = Math.min(scaleX, scaleY); return image.getScaledInstance((int) ((double) imgWidth * bestScale), (int) ((double) imgHeight * bestScale), Image.SCALE_SMOOTH); } }