현재 위치: > 최신 기사 목록> ImageFlip과 exif_read_data를 결합하여 이미지 플립의 올바른 방향을 얻습니다.

ImageFlip과 exif_read_data를 결합하여 이미지 플립의 올바른 방향을 얻습니다.

gitbox 2025-05-27

이미지로 작업 할 때 때때로 이미지의 잘못된 방향으로 문제가 발생합니다. 특히 스마트 폰으로 사진을 찍을 때 그림의 방향 정보는 종종 EXIF ​​데이터에 저장됩니다. 그림을 올바르게 표시하려면이 정보를 기반으로 그림의 방향을 조정해야합니다. PHP는 이미지 플립 작업을 처리하는 ImageFlip 함수를 제공하며 이미지의 방향을 얻기 위해 exif 데이터를 읽을 수있는 exif_read_data 함수도 있습니다. 이 기사에서는이 두 기능을 결합하여 이미지의 플립 방향을 수정하는 방법을 소개합니다.

1. exif 데이터의 방향 정보

Exif (교환 가능한 이미지 파일 형식)는 이미지 촬영 조건, 카메라 설정 등에 대한 다양한 정보가 포함 된 이미지 파일의 일부입니다. 방향 의 값은 정상 촬영 방향에 비해 그림의 회전 각도 또는 플립을 나타냅니다.

공통 방향 값은 다음과 같습니다.

  • 1 : 정상 (회전 또는 플립 없음)

  • 3 : 180도 회전합니다

  • 6 : 시계 방향으로 90도 회전합니다

  • 8 : 시계 반대 방향으로 90도 회전합니다

  • 2 : 수직 플립

  • 4 : 수평 플립

  • 5 : 수직으로 뒤집어 시계 방향으로 90도 회전합니다

  • 7 : 수평으로 뒤집고 시계 방향으로 90도 회전합니다

따라서 사진을 뒤집어야하는지 여부와 EXIF ​​데이터의 방향 값을 기준으로 뒤집는 방법을 판단 할 수 있습니다.

2. Exif_Read_Data를 사용하여 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 ​​데이터에 존재하지 않으면 이미지에 방향 정보가 포함되어 있지 않음을 의미합니다.

3. ImageFlip 함수를 사용하여 이미지 방향을 수정하십시오

ImageFlip 은 PHP의 GD 라이브러리 기능으로 이미지를 뒤집는 데 사용할 수 있습니다. EXIF 데이터의 방향 값을 기반으로 ImageFlip을 사용하여 이미지 방향을 수정하는 방법을 결정할 수 있습니다.

다음은 exif_read_dataimageflip 함수를 결합하여 이미지 방향을 수정하는 완전한 코드 예제입니다.

 <?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 데이터를 읽고 방향 필드의 값을 얻습니다. 그런 다음이 값을 기반으로 이미지의 방향을 수리하기 위해 ImageFlipImagerotate를 사용하는 방법을 결정하십시오. 고정 이미지는 지정된 경로에 저장됩니다.