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:
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(&$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!