Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Orientasi Imej Apabila Memuat Naik Imej dari Peranti Mudah Alih?

Bagaimana untuk Membetulkan Orientasi Imej Apabila Memuat Naik Imej dari Peranti Mudah Alih?

DDD
DDDasal
2024-11-03 05:37:02188semak imbas

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

Data EXIF ​​Baca PHP dan Laraskan Orientasi Imej

Apabila memuat naik imej, terutamanya dari peranti mudah alih, adalah penting untuk memastikan orientasinya diperbetulkan. Ini dicapai dengan membaca data EXIF ​​​​dan memanipulasi imej dengan sewajarnya.

Bacaan Data EXIF

Fungsi exif_read_data() digunakan untuk membaca maklumat EXIF ​​daripada yang dimuat naik imej JPEG. Contohnya:

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

Hasilnya, disimpan dalam $exif, mengandungi pelbagai maklumat, termasuk data orientasi.

Pelarasan Orientasi

Untuk membetulkan orientasi, periksa medan Orientasi data EXIF. Nilai biasa termasuk:

  • 3: Putar 180 darjah lawan jam
  • 6: Putar 90 darjah ikut arah jam
  • 8: Putar 90 darjah lawan jam

Berdasarkan nilai orientasi, gunakan transformasi yang sesuai menggunakan fungsi manipulasi imej seperti imagerotate() atau rotateImage().

Mengatasi Isu Biasa dengan iPhone dan Imej Android

Kod anda mungkin menghadapi masalah dengan imej daripada iPhone dan peranti Android kerana ia sering membenamkan data EXIF ​​​​dengan cara yang tidak standard. Untuk menangani perkara ini, pertimbangkan untuk menggunakan fungsi GD atau ImageMagick untuk pembetulan orientasi.

Fungsi 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>

Fungsi 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>

Fungsi ini melaraskan orientasi imej tanpa pensampelan semula, mengekalkan kualiti imej.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Orientasi Imej Apabila Memuat Naik Imej dari Peranti Mudah Alih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn