1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
   | package graphique;
 
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
 
import com.sun.media.sound.Toolkit;
 
public class Resize {
	protected static Image image;
	protected static java.awt.Toolkit toolkit;
	protected static BufferedImage bufImage;
	Resize(String source){
		/** Accès au toolkit : */
		toolkit = java.awt.Toolkit.getDefaultToolkit();
		/** creation de l image*/
		image=toolkit.getImage(source);
		/**redimension de l image*/
		image=scale(image, 400, 300);
		bufImage=toBufferedImage(image);
		ecrireImage(source);
	}
	/** 
         * Redimensionne une image.
         * 
         * @param source Image à redimensionner.
         * @param width Largeur de l'image cible.
         * @param height Hauteur de l'image cible.
         * @return Image redimensionnée.
         */
	public static Image scale(Image source, int width, int height) {
		/* On crée une nouvelle image aux bonnes dimensions. */
		BufferedImage buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
 
		/* On dessine sur le Graphics de l'image bufferisée. */
		Graphics2D g = buf.createGraphics();
		g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		g.drawImage(source, 0, 0, width, height, null);
		g.dispose();
 
		/* On retourne l'image bufferisée, qui est une image. */
		return buf;
	}
 
	public static void ecrireImage(String cheminSource){
		File out = new File(cheminSource);
		try {
			ImageIO.write(bufImage, "jpg", out);
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(out);
	}
	public BufferedImage toBufferedImage(Image image) {
		/** On test si l'image n'est pas déja une instance de BufferedImage */
		if( image instanceof BufferedImage ) {
			/** cool, rien à faire */
			return( (BufferedImage)image );
		} else {
			/** On s'assure que l'image est complètement chargée */
			image = new ImageIcon(image).getImage();
 
			/** On crée la nouvelle image */
			BufferedImage bufferedImage = new BufferedImage(
					image.getWidth(null),
					image.getHeight(null),
					BufferedImage.TYPE_INT_RGB );
			Graphics g = bufferedImage.createGraphics();
			g.drawImage(image,0,0,null);
			g.dispose();
 
			return( bufferedImage );
		} 
	}
} | 
Partager