Onde estão as miniaturas armazenadas em telefones Nokia para imagens capturadas?
-
26-09-2019 - |
Pergunta
O link a seguir mostra a lista de diretórios onde as miniaturas são armazenadas nos respectivos telefones:http://wiki.forum.nokia.com/index.php/thumbnail_path_for_3rd_edition_devices
Mas os telefones fornecidos no link são limitados. Isso significa que, para outros telefones (como N86, ExpressMusic etc), não tenho acesso a miniaturas? Tentei usar todas as estruturas de diretório fornecidas no link, mas nenhuma está funcionando para os telefones mencionados. Alguém sabe alguma coisa sobre isso?
Solução
Eu não sei se é o que você precisa, mas você pode buscar embutido Miniatura fora do arquivo JPEG em tamanho real. No meu aplicativo J2ME, mostro a galeria telefônica dessa maneira.
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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow