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;
}
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. –
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. –
Je joins mon code :) –