Maison >Java >javaDidacticiel >rotation des images Java

rotation des images Java

黄舟
黄舟original
2016-12-30 11:46:291784parcourir

La rotation de l'image nécessite l'utilisation d'une matrice de rotation.

La matrice de rotation dans le sens horaire est :

rotation des images Java

La matrice de rotation dans le sens antihoraire est :

rotation des images Java

Nous utilisons Le centre de l'image est le point de rotation, et le code pour la rotation dans le sens inverse des aiguilles d'une montre des degrés alpha est le suivant :

public void Rotation(double degree){
		
	degree = Math.toRadians(degree);//化为弧度
        int sw = (int) Math.sqrt(w*w +h*h);//旋转后图像的w
        int sh = sw;//旋转后图像的h
        
        int ox = w/2;
        int oy = h/2;
        
		int[] d = new int[sw*sh];
		for (int y = 0; y < h; y++) {
                    for (int x = 0; x < w; x++) {
            	     int x1 = (int)(Math.cos(degree)*(x-ox) + Math.sin(degree)*(y-oy));//原图像上点旋转后的点的x坐标
            	     int y1 = (int)(Math.cos(degree)*(y-oy) - Math.sin(degree)*(x-ox));
            	     d[x1-sw/2+ (y1+sh/2)* sw] = data[x + y * w];
                   }
		}

		this.data = d;
		this.w = sw;
		this.h = sh;
	}

Le résultat de la rotation :

rotation des images Java

rotation des images Java

Comme vous pouvez le voir sur l'image, certains points sont abandonnés, donc après la rotation, nous devons encore effectuer une interpolation bilinéaire.

Mais pour des angles spécifiques, nous pouvons toujours obtenir un résultat sans perte.



Tournez de 90 degrés dans le sens des aiguilles d'une montre, faites pivoter de 90 degrés dans le sens inverse des aiguilles d'une montre et retournez le code clé :

for (int y = 0; y < h; y++) {
            for (int x = 0; x < w; x++) {           	
            	d[y+ (w-x-1)* h] = data[x + y * w];//逆时针
                d[h-1-y+ x* h] = data[x + y * w];//顺时针
                d[w-x-1+ y* w] = data[x + y * w];//翻转
     }
}

Le résultat de la course est le suivant :

rotation des images Java

rotation des images Java

Ce qui précède est le contenu de la rotation des images Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn