Maison >interface Web >js tutoriel >Comment accéder aux données de rotation JPEG EXIF ​​en JavaScript côté client ?

Comment accéder aux données de rotation JPEG EXIF ​​en JavaScript côté client ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 07:28:31777parcourir

How to Access JPEG EXIF Rotation Data in JavaScript on the Client Side?

Accès aux données de rotation JPEG EXIF ​​en JavaScript côté client

Problème :

Rotation les photos basées sur leur rotation d'origine, telle qu'enregistrée dans les données JPEG EXIF, constituent un défi lorsque l'on travaille avec JavaScript et des images locales dans le navigateur.

Solution côté client :

Pour résoudre ce problème, nous avons besoin d'une solution côté client qui permette à JavaScript d'extraire les informations d'orientation des données JPEG EXIF. Une approche consiste à utiliser l'API FileReader et les objets DataView :

<br>function getOrientation(file, callback) {<br> const reader = new FileReader();<br> reader.onload = (e) => {</p>
<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 &amp; 0xFF00) != 0xFF00) break;
  else offset += view.getUint16(offset, false);
}
return callback(-1);

};
reader.readAsArrayBuffer(file);
}

Cet extrait de code illustre une solution côté client qui extrait la balise d'orientation des données JPEG EXIF. En utilisant FileReader et DataView, il récupère rapidement et efficacement les informations souhaitées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn