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
   |  
import java.awt.Canvas;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
 
 
public class PanelImage extends Canvas {
	private Image image;
	private Image image_new;
	private int facteur;
	private String url;
	private String operation;
	private int w;
	private int h;
	private BufferedImage bufferedImage;
	private BufferedImage bufferedImage2;
	private BufferedImage bufDest;
	private BufferedImage buf;
	private BufferedImage g2d2;
	private AffineTransform at;
	private BufferedImage bImage2;
	private BufferedImage Image3;
 
	public PanelImage(BufferedImage bufImg, int facteur, String operation, int width, int height){
		this.buf = bufImg;
		this.facteur = facteur;
		this.operation = operation;
		this.w = width;
		this.h = height;
 
		if(this.operation == "rotation"){
			//On crée d'abord un buffered image avec des pixel blancs pour ne pas en perdre lors de la rotation
			int w = buf.getWidth(null);
		    int h = buf.getHeight(null);
		    int diag = (int)(Math.sqrt(w*w+h*h));
		    bufferedImage2 = new BufferedImage(diag, diag, BufferedImage.TYPE_INT_ARGB);
		    for (int i = 0; i < diag; i++) {
		      for (int j = 0; j < diag; j++) {
		      	bufferedImage2.setRGB(i, j, 0xffffffff);
		      }
		    }
		    Graphics2D g2 = bufferedImage2.createGraphics();
		    g2.drawImage(bufferedImage2, (diag-w)/2, (diag-h)/2, null);
 
		    w = bufferedImage2.getWidth(null);
		    h = bufferedImage2.getHeight(null);
 
		    Image3 = new BufferedImage(bufferedImage2.getWidth(), bufferedImage2.getHeight(), BufferedImage.TYPE_INT_ARGB);
		    Graphics2D gr3 = Image3.createGraphics();
		    int im2x = bufferedImage2.getWidth()/2 - buf.getWidth()/2;
		    int im2y = bufferedImage2.getHeight()/2 - buf.getHeight()/2;
		    gr3.drawImage(bufferedImage2,0,0,null);
		    gr3.drawImage(buf,im2x,im2y,null);
		    gr3.dispose();
 
		    AffineTransform transform = AffineTransform.getRotateInstance(Math.toRadians(facteur), w/2, h/2);
		    AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
		    BufferedImage bImage2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);     
		    bufDest = op.filter(Image3, bImage2);
 
 
		}
	}
 
		public BufferedImage getBufImg(){
			return bufDest;
		} 
	} | 
Partager