>백엔드 개발 >PHP 튜토리얼 >모바일 장치에서 이미지를 업로드할 때 이미지 방향을 수정하는 방법은 무엇입니까?

모바일 장치에서 이미지를 업로드할 때 이미지 방향을 수정하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-03 05:37:02191검색

How to Correct Image Orientation When Uploading Images from Mobile Devices?

PHP EXIF ​​데이터 읽기 및 이미지 방향 조정

특히 모바일 장치에서 이미지를 업로드할 때 방향이 올바른지 확인하는 것이 중요합니다. 이는 EXIF ​​데이터를 읽고 이에 따라 이미지를 조작함으로써 달성됩니다.

EXIF 데이터 읽기

exif_read_data() 함수는 업로드된 이미지에서 EXIF ​​정보를 읽는 데 사용됩니다. JPEG 이미지. 예:

<code class="php">$exif = exif_read_data($upload_path . $newfilename);</code>

$exif에 저장된 결과에는 방향 데이터를 포함한 다양한 정보가 포함되어 있습니다.

방향 조정

수정하려면 방향을 확인하려면 EXIF ​​데이터의 방향 필드를 검사하세요. 일반적인 값은 다음과 같습니다.

  • 3: 시계 반대 방향으로 180도 회전
  • 6: 시계 방향으로 90도 회전
  • 8: 시계 반대 방향으로 90도 회전

방향 값에 따라 다음과 같은 이미지 조작 기능을 사용하여 적절한 변환을 적용합니다. imagerotate() 또는rotateImage().

iPhone 및 Android 이미지의 일반적인 문제 해결

iPhone 및 Android 기기의 이미지는 종종 삽입되기 때문에 코드에 문제가 발생할 수 있습니다. 비표준 방식의 EXIF ​​데이터. 이 문제를 해결하려면 방향 수정을 위해 GD 또는 ImageMagick 기능을 사용하는 것이 좋습니다.

GD 기능

<code class="php">function image_fix_orientation(&amp;$image, $filename) {
    $exif = exif_read_data($filename);

    if (!empty($exif['Orientation'])) {
        switch ($exif['Orientation']) {
            case 3:
                $image = imagerotate($image, 180, 0);
                break;

            case 6:
                $image = imagerotate($image, 90, 0);
                break;

            case 8:
                $image = imagerotate($image, -90, 0);
                break;
        }
    }
}</code>

ImageMagick 기능

<code class="php">function image_fix_orientation($image) {
    if (method_exists($image, 'getImageProperty')) {
        $orientation = $image->getImageProperty('exif:Orientation');
    } else {
        $filename = $image->getImageFilename();

        if (empty($filename)) {
            $filename = 'data://image/jpeg;base64,' . base64_encode($image->getImageBlob());
        }

        $exif = exif_read_data($filename);
        $orientation = isset($exif['Orientation']) ? $exif['Orientation'] : null;
    }

    if (!empty($orientation)) {
        switch ($orientation) {
            case 3:
                $image->rotateImage('#000000', 180);
                break;

            case 6:
                $image->rotateImage('#000000', 90);
                break;

            case 8:
                $image->rotateImage('#000000', -90);
                break;
        }
    }
}</code>

이러한 기능은 리샘플링 없이 이미지 방향을 조정하여 이미지를 보존합니다. 품질.

위 내용은 모바일 장치에서 이미지를 업로드할 때 이미지 방향을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.