首頁 >後端開發 >php教程 >為什麼不使用 PHP 的「exif_read_data」函數來修正 iPhone 和 Android 影像方向?

為什麼不使用 PHP 的「exif_read_data」函數來修正 iPhone 和 Android 影像方向?

Barbara Streisand
Barbara Streisand原創
2024-10-28 06:57:02448瀏覽

Why are iPhone and Android image orientations not being corrected using PHP's `exif_read_data` function?

PHP read_exif_data 和調整方向

提供的程式碼嘗試根據 EXIF 資料調整上傳的 JPEG 影像的方向。但是,用戶報告了來自 iPhone 和 Android 裝置的圖像問題。

程式碼分析

使用 exif_read_data 函數擷取 EXIF 資料。 switch 語句檢查特定方向並嘗試相應地旋轉影像。但是,提供的 EXIF 資料似乎不包含有效的方向值。

更新的程式碼

要解決此問題,我們可以使用更強大的方法來擷取方向資料。這是程式碼的更新版本:

<code class="php">$exif = exif_read_data($upload_path . $newfilename, 'ANY_TAG');
$ort = $exif['IFD0']['Orientation'] ?? 1;</code>

EXIF 方向值

方向值的範圍可以從1 到8,不同的值表示不同的旋轉或翻轉.

  • 1:水平(正常)
  • 3:180° CW 旋轉
  • 6:90° CW 旋轉
  • 8:90° CCW 旋轉
  • 2:水平翻轉
  • 4:垂直翻轉
  • 5:水平翻轉和90° CW 旋轉
  • 7:垂直翻轉和90°順時針旋轉

調整影像方向

有了正確的方向值,我們就可以根據需要調整影像:

<code class="php">switch ($ort)
{
    case 3: // 180 rotate left
        $image->imagerotate(-180, -1);
        break;

    case 6: // 90 rotate right
        $image->imagerotate(-90, -1);
        break;

    case 8:    // 90 rotate left
        $image->imagerotate(90, -1);
        break;
}</code>

其他注意事項

如果EXIF 資料仍不包含方向值或調整似乎不起作用,您可能需要查閱圖片庫的特定文件或考慮使用確定正確方向的替代方法。

以上是為什麼不使用 PHP 的「exif_read_data」函數來修正 iPhone 和 Android 影像方向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn