2010-06-11 5 views
1

Le lien suivant présente la liste des répertoires dont les vignettes sont stockées dans les téléphones respectifs: http://wiki.forum.nokia.com/index.php/Thumbnail_path_for_3rd_edition_devicesOù sont stockées les vignettes sur les téléphones Nokia pour les images capturées?

mais les téléphones donnés sur le lien sont limitées. Cela signifie-t-il que, pour les autres téléphones (tels que N86, Expressmusic, etc.), je n'ai pas accès aux miniatures? J'ai essayé d'utiliser toutes les structures de répertoires données sur le lien, mais aucune ne fonctionne pour les téléphones mentionnés. Est-ce que quelqu'un en sait quelque chose?

Répondre

0

Je ne sais pas si c'est ce dont vous avez besoin, mais vous pouvez aller chercher miniature dans le fichier JPEG en taille réelle. Dans mon application j2me, je montre la galerie de téléphone de cette façon.

private final static int STOP_AT_BYTE = 8192; //how far to search for thumbnail 
private final static int THUMB_MAX_SIZE = 16284; 

private Image getThumbnailFromStream(InputStream str, long fileSize) 
{ 
    byte[] tempByteArray = new byte[THUMB_MAX_SIZE]; // how big can a thumb get. 
    byte[] bytefileReader = {0}; // lazy byte reader 
    byte firstByte,secondByte = 0; 
    int currentIndex = 0; 

    int currByte = 0; 

    try { 
     str.read(bytefileReader); 
     firstByte = bytefileReader[0]; 
     str.read(bytefileReader); 
     secondByte = bytefileReader[0]; 

     currByte += 2; 

     if ((firstByte & 0xFF) == 0xFF && (secondByte & 0xFF) == 0xD8) { //if this is JPEG 
      byte rByte = 0; 
      do { 
       while (rByte != -1 && currByte < fileSize) { 
        str.read(bytefileReader); 
        rByte = bytefileReader[0]; 
        currByte++; 
       } 

       str.read(bytefileReader); 
       rByte = bytefileReader[0]; 
       currByte++; 

       if (currByte > STOP_AT_BYTE) { 
        return null; 
       } 
      } while ((rByte & 0xFF) != 0xD8 && currByte < fileSize); // thumb starts 

      if (currByte >= fileSize) { 
       return null; 
      } 

      tempByteArray[currentIndex++] = -1; 
      tempByteArray[currentIndex++] = rByte; 
      rByte = 0; 

      do { 
       while (rByte != -1){ 
        str.read(bytefileReader); 
        rByte = bytefileReader[0]; 
        tempByteArray[currentIndex++] = rByte; 
       } 

       str.read(bytefileReader); 
       rByte = bytefileReader[0]; 
       tempByteArray[currentIndex++] = rByte; 
      } while ((rByte & 0xFF) != 0xD9); // thumb ends 

      tempByteArray[currentIndex++] = -1; 
      Image image = Image.createImage(tempByteArray, 0, currentIndex-1); 
      tempByteArray = null; 

      return image; 
     } 
    } catch (Throwable e) { 
     //error 
    } 

    return null; 
} 
+0

Salut Pavel, Merci pour votre réponse. Pouvez-vous s'il vous plaît être un peu compliqué sur ce que vous voulez dire en récupérant une vignette intégrée dans un fichier JPEG en taille réelle? En ce moment, j'ai besoin d'un moyen de trouver le chemin de la vignette ou de compresser l'image en taille réelle dans la galerie de mon code. Toute suggestion sera appréciée .. Merci, Ashish. –

+0

Voir http://www.media.mit.edu/pia/Research/deepview/exif.html. Tout ce dont vous avez besoin est de lire votre image en taille réelle, octet par octet jusqu'à ce que vous trouviez le marqueur 0xFFD8. Ce sera le début de la vignette intégrée. –

+0

Je joins mon code :) –

Questions connexes