PHP read_exif_data dan Laraskan Orientasi
Kod yang disediakan cuba melaraskan orientasi imej JPEG yang dimuat naik berdasarkan data EXIF. Walau bagaimanapun, pengguna telah melaporkan isu dengan imej daripada iPhone dan peranti Android.
Analisis Kod
Data EXIF diekstrak menggunakan fungsi exif_read_data. Pernyataan suis menyemak orientasi tertentu dan cuba memutarkan imej dengan sewajarnya. Walau bagaimanapun, nampaknya data EXIF yang disediakan tidak mengandungi nilai Orientasi yang sah.
Kod Kemas Kini
Untuk menyelesaikan isu ini, kami boleh menggunakan kaedah yang lebih mantap untuk mengekstrak data orientasi. Berikut ialah versi kod yang dikemas kini:
<code class="php">$exif = exif_read_data($upload_path . $newfilename, 'ANY_TAG'); $ort = $exif['IFD0']['Orientation'] ?? 1;</code>
Nilai Orientasi EXIF
Nilai Orientasi boleh berjulat dari 1 hingga 8, dengan nilai berbeza yang menunjukkan putaran atau flipping yang berbeza .
Melaraskan Orientasi Imej
Dengan nilai orientasi yang betul, kita boleh melaraskan imej mengikut keperluan:
<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>
Pertimbangan Tambahan
Jika data EXIF masih tidak mengandungi nilai Orientasi atau pelarasan nampaknya tidak berfungsi, anda mungkin perlu merujuk dokumentasi khusus untuk pustaka imej anda atau pertimbangkan untuk menggunakan kaedah alternatif untuk menentukan orientasi yang betul.
Atas ialah kandungan terperinci Mengapakah orientasi imej iPhone dan Android tidak diperbetulkan menggunakan fungsi `exif_read_data` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!