أين يتم تخزين الصور المصغرة على هواتف نوكيا للصور التي تم التقاطها؟

StackOverflow https://stackoverflow.com/questions/3023063

سؤال

يوضح الرابط التالي قائمة الدلائل التي يتم فيها تخزين الصور المصغرة في الهواتف المعنية:http://wiki.forum.nokia.com/index.php/thumbnail_path_for_3rd_edition_devices

لكن الهواتف المقدمة على الرابط محدودة. هل هذا يعني أنه بالنسبة للهواتف الأخرى (مثل N86 ، Expressmusic وما إلى ذلك) ، ليس لدي إمكانية الوصول إلى الصور المصغرة؟ حاولت استخدام جميع هياكل الدليل المقدمة على الرابط ، لكن لا أحد يعمل للهواتف المذكورة. لا أحد يعرف شيئا عن ذلك؟

هل كانت مفيدة؟

المحلول

لا أعرف ما إذا كان هذا هو ما تحتاجه ، ولكن يمكنك الجلب مغروس Thumbnail من ملف JPEG بالحجم الكامل. في تطبيق J2ME الخاص بي ، أعرض معرض الهاتف بهذه الطريقة.

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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top