Mengakses Data Putaran JPEG EXIF dalam JavaScript pada Bahagian Pelanggan
Masalah:
Berpusing foto berdasarkan putaran asalnya, seperti yang direkodkan dalam data JPEG EXIF, merupakan satu cabaran apabila bekerja dengan JavaScript dan imej tempatan dalam penyemak imbas.
Penyelesaian Sisi Pelanggan:
Untuk menangani masalah ini, kami memerlukan penyelesaian pihak pelanggan yang membolehkan JavaScript mengekstrak maklumat orientasi daripada data JPEG EXIF. Satu pendekatan melibatkan penggunaan FileReader API dan objek DataView:
<br>function getOrientation(fail, panggil balik) {<br> const reader = new FileReader();<br> reader.onload = (e) => {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">const view = new DataView(e.target.result); if (view.getUint16(0, false) != 0xFFD8) return callback(-2); let length = view.byteLength, offset = 2; while (offset < length) { if (view.getUint16(offset+2, false) <= 8) return callback(-1); const marker = view.getUint16(offset, false); offset += 2; if (marker == 0xFFE1) { if (view.getUint32(offset += 2, false) != 0x45786966) return callback(-1); const little = view.getUint16(offset += 6, false) == 0x4949; offset += view.getUint32(offset + 4, little); const tags = view.getUint16(offset, little); offset += 2; for (let i = 0; i < tags; i++) { if (view.getUint16(offset + (i * 12), little) == 0x0112) { return callback(view.getUint16(offset + (i * 12) + 8, little)); } } } else if ((marker & 0xFF00) != 0xFF00) break; else offset += view.getUint16(offset, false); } return callback(-1);
};
reader.readAsArrayBuffer(file);
}
Coretan kod ini menunjukkan penyelesaian pihak klien yang mengekstrak teg orientasi daripada data JPEG EXIF. Dengan menggunakan FileReader dan DataView, ia dengan pantas dan berkesan mendapatkan semula maklumat yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Data Putaran JPEG EXIF dalam JavaScript di Bahagian Pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!