이미지로 작업 할 때 때때로 이미지의 잘못된 방향으로 문제가 발생합니다. 특히 스마트 폰으로 사진을 찍을 때 그림의 방향 정보는 종종 EXIF 데이터에 저장됩니다. 그림을 올바르게 표시하려면이 정보를 기반으로 그림의 방향을 조정해야합니다. PHP는 이미지 플립 작업을 처리하는 ImageFlip 함수를 제공하며 이미지의 방향을 얻기 위해 exif 데이터를 읽을 수있는 exif_read_data 함수도 있습니다. 이 기사에서는이 두 기능을 결합하여 이미지의 플립 방향을 수정하는 방법을 소개합니다.
Exif (교환 가능한 이미지 파일 형식)는 이미지 촬영 조건, 카메라 설정 등에 대한 다양한 정보가 포함 된 이미지 파일의 일부입니다. 방향 의 값은 정상 촬영 방향에 비해 그림의 회전 각도 또는 플립을 나타냅니다.
공통 방향 값은 다음과 같습니다.
1 : 정상 (회전 또는 플립 없음)
3 : 180도 회전합니다
6 : 시계 방향으로 90도 회전합니다
8 : 시계 반대 방향으로 90도 회전합니다
2 : 수직 플립
4 : 수평 플립
5 : 수직으로 뒤집어 시계 방향으로 90도 회전합니다
7 : 수평으로 뒤집고 시계 방향으로 90도 회전합니다
따라서 사진을 뒤집어야하는지 여부와 EXIF 데이터의 방향 값을 기준으로 뒤집는 방법을 판단 할 수 있습니다.
exif_read_data 함수는 이미지 파일에서 exif 데이터를 읽을 수 있습니다. 이 기능을 통해 방향 정보를 얻을 수있어 그림의 방향을 판단 할 수 있습니다.
다음은 exif 데이터를 읽기위한 예제 코드입니다.
<?php
$file = 'path/to/your/image.jpg';
// 파일이 있는지 확인하십시오
if (file_exists($file)) {
// 읽다EXIF데이터
$exif = exif_read_data($file);
// 만약에EXIF데이터包含Orientation전지
if (isset($exif['Orientation'])) {
echo 'Orientation: ' . $exif['Orientation'];
} else {
echo '찾을 수 없습니다Orientation전지';
}
}
?>
이 코드는 이미지 파일의 exif 데이터를 읽고 방향 필드의 값을 출력합니다. 이 필드가 EXIF 데이터에 존재하지 않으면 이미지에 방향 정보가 포함되어 있지 않음을 의미합니다.
ImageFlip 은 PHP의 GD 라이브러리 기능으로 이미지를 뒤집는 데 사용할 수 있습니다. EXIF 데이터의 방향 값을 기반으로 ImageFlip을 사용하여 이미지 방향을 수정하는 방법을 결정할 수 있습니다.
다음은 exif_read_data 와 imageflip 함수를 결합하여 이미지 방향을 수정하는 완전한 코드 예제입니다.
<?php
function fixImageOrientation($file) {
// 파일이 있는지 확인하십시오
if (file_exists($file)) {
// 사진을 얻으십시오EXIF데이터
$exif = exif_read_data($file);
// 만약에EXIF데이터包含Orientation전지
if (isset($exif['Orientation'])) {
// 얻다Orientation가치
$orientation = $exif['Orientation'];
// 사진로드
$image = imagecreatefromjpeg($file);
// ~에 따르면Orientation이미지 방향을 수정하는 값
switch ($orientation) {
case 3:
// 회전180도
imageflip($image, IMG_FLIP_BOTH);
break;
case 6:
// 顺时针회전90도
$image = imagerotate($image, -90, 0);
break;
case 8:
// 逆时针회전90도
$image = imagerotate($image, 90, 0);
break;
case 2:
// 수직 플립
imageflip($image, IMG_FLIP_VERTICAL);
break;
case 4:
// 수평 플립
imageflip($image, IMG_FLIP_HORIZONTAL);
break;
case 5:
// 수직 플립并회전90도顺时针
imageflip($image, IMG_FLIP_VERTICAL);
$image = imagerotate($image, -90, 0);
break;
case 7:
// 수평 플립并회전90도顺时针
imageflip($image, IMG_FLIP_HORIZONTAL);
$image = imagerotate($image, -90, 0);
break;
default:
// 수리가 필요하지 않습니다
break;
}
// 수리 된 이미지를 저장하십시오
imagejpeg($image, 'path/to/save/fixed_image.jpg');
// 무료 이미지 메모리
imagedestroy($image);
echo "이미지 방향이 성공적으로 수리됩니다!";
} else {
echo "아니요Orientation전지,수리가 필요하지 않습니다图片方向。";
}
} else {
echo "이미지 파일이 존재하지 않습니다。";
}
}
// 이미지 방향을 수정하기 위해 함수를 호출합니다
fixImageOrientation('path/to/your/image.jpg');
?>
이 코드에서 먼저 exif_read_data 함수를 통해 그림의 exif 데이터를 읽고 방향 필드의 값을 얻습니다. 그런 다음이 값을 기반으로 이미지의 방향을 수리하기 위해 ImageFlip 및 Imagerotate를 사용하는 방법을 결정하십시오. 고정 이미지는 지정된 경로에 저장됩니다.