J'ai remarqué une colonne étrange pour Mediastore.images.imagecolumns strong> appelé " mini_thumb_magic strong> ". P>
La documentation indique que: P>
Le mini-thumb ID. P>
Type: Integer P>
valeur constante: "mini_thumb_magic" p> blockQuote>
la question h2>
Je suppose que ce champ est lié à MediaStore. Images.Thumbnails . P>
est-ce correct? Sinon, qu'est-ce que c'est et comment l'utilisez-vous? P>
Si c'est correct, j'ai d'autres questions qui lui sont liées: p>
est-ce une image mini-taille de l'original? Utilise-t-il le même rapport d'aspect ou est-ce que cela dépassait-il? p> li>
Comment se fait-il que la taille de "micro" est carré (96 x 96) et la taille de "mini" est un rectangle non carré (512 x 384)? p> li>
Comment l'utilisez-vous? Je suppose que c'est que cela a fait en utilisant " Thumb_data strong> ", qui est une blob, vous l'utilisez donc comme Ceci strong> < / a>, mais alors quel est le but d'utiliser " GetThumbnail " Si vous avez déjà ce champ? P> LI>
obtient-il une vignette pivotée au cas où la valeur d'orientation n'est pas 0? Cela signifie que si je souhaite le montrer, je n'ai pas besoin de faire pivoter l'image? P> li>
est-il possible de faire une requête des images avec leurs vignettes? Peut-être utiliser une jointure intérieure? p> li>
est-il disponible pour tous les appareils et versions Android? P> LI>
Pourquoi est-ce même appelé "magie"? Est-ce parce qu'il est également disponible pour des vidéos (et pour une raison quelconque n'existe pas pour la musique, car il pourrait s'agir de la photo de couverture de l'album, par exemple)? p> li> ol>
3 Réponses :
vérifier ce fichier: https: //github.com/android/platform_packages_providers_mediaprovider/blob/master/src/com/andrroid/providers/media/mediathtthumbequest.java dans le code source Android. Cette valeur est un nombre magique qui permet de déterminer si la vignette est toujours valide. Je n'ai pas étudié ce dossier plus loin, mais cela ne devrait pas être un problème de bit de plonger plus profondément. À vos questions: p>
Intéressant. Depuis que je suis déjà passé à partir de cette question, je ne peux pas le vérifier et le marquer, mais parce que vous avez pris le temps de répondre, vous obtenez +1. Peut-être que dans le futur, je vous tiendrez aussi.
@androidDeveloper L'avenir est maintenant ici. Vous devriez probablement attribuer à TOMS sa bonne réponse.
Selon le code source de l'URL suivante, le numéro magique est l'ID de l'image d'origine * une constante. Cette valeur est ensuite utilisée pour vérifier une longue int. Si l'INT n'est pas comme prévu, il est considéré comme synchronisé avec le support d'image.
// Get the magic number for the specified id in the mini-thumb file. // Returns 0 if the magic is not available. public synchronized long getMagic(long id) { // check the mini thumb file for the right data. Right is // defined as having the right magic number at the offset // reserved for this "id". RandomAccessFile r = miniThumbDataFile(); if (r != null) { long pos = id * BYTES_PER_MINTHUMB; FileLock lock = null; try { mBuffer.clear(); mBuffer.limit(1 + 8); lock = mChannel.lock(pos, 1 + 8, true); // check that we can read the following 9 bytes // (1 for the "status" and 8 for the long) if (mChannel.read(mBuffer, pos) == 9) { mBuffer.position(0); if (mBuffer.get() == 1) { return mBuffer.getLong(); } } } catch (IOException ex) { Log.v(TAG, "Got exception checking file magic: ", ex); } catch (RuntimeException ex) { // Other NIO related exception like disk full, read only channel..etc Log.e(TAG, "Got exception when reading magic, id = " + id + ", disk full or mount read-only? " + ex.getClass()); } finally { try { if (lock != null) lock.release(); } catch (IOException ex) { // ignore it. } } } return 0; }
C'est un paramètre un peu étrange ...
Tout en explorant le code source de la galerie,
remarqué que la valeur est en cours de lecture du curseur, mais elle n'est jamais utilisée:
return new Image(this, mContentResolver, id, cursor.getPosition(), contentUri(id), dataPath, mimeType, dateTaken, title, orientation); }