Pular para o conteúdo
PHP

PHP — Corrigindo rotação de fotos tiradas via celular

Atualizado em
Capa do artigo: PHP — Corrigindo rotação de fotos tiradas via celular

Ola Gente!

Você já observou que quando uma foto é tirada via celular a rotação dele “buga” ao ser redimensionada?

Isto se deve ao fato de que a foto vem rotacionada porem com um “metadado” que indica a rotação, isto faz com que ao se aberto no computador o computador corrige a rotação e você não nota que a imagem esta rotacionada.

Antes iremos consultar todos os metadados da foto utilizando a função “exif_read_data”:

Veja que uma variável de nome “Orientation” esta vindo com um número.

Este número indica a rotação, então basta utilizarmos a função “imageflip” e “imagerotate”, e com isto temos a função pronta:

<?
function ImageFixOrientation_JPG($filename)
{

	$exif = exif_read_data($filename);

	if (!empty($exif['Orientation']))
	{
	
		$image = imagecreatefromjpeg($filename);
		
		switch ($exif['Orientation'])
		{
			case 1: // nothing
				break;
			case 2: // horizontal flip
				imageflip($image, IMG_FLIP_HORIZONTAL);
				break;
			case 3: // 180 rotate left
				$image = imagerotate($image, 180, 0);
				break;
			case 4: // vertical flip
				imageflip($image, IMG_FLIP_VERTICAL);
				break;
			case 5: // vertical flip + 90 rotate right
				imageflip($image, IMG_FLIP_VERTICAL);
				$image = imagerotate($image, -90, 0);
				break;
			case 6: // 90 rotate right
				$image = imagerotate($image, -90, 0);
				break;
			case 7: // horizontal flip + 90 rotate right
				imageflip($image, IMG_FLIP_HORIZONTAL);
				$image = imagerotate($image, -90, 0);
				break;
			case 8:    // 90 rotate left
				$image = imagerotate($image, 90, 0);
				break;
		}

		imagejpeg($image, $filename, 100);
		
	}
	
}
?>

Exemplo de uso:

ImageFixOrientation_JPG(“Fotos/Foto1.jpg”);

Por hoje é isto, queridos desenvolvedores! 👩‍💼

Até logo! 👋

PHP

Leia também