بسم الله الرحمن الرحيم صورة سلسلة أو بلاط / فسيفساء

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

  •  07-07-2019
  •  | 
  •  

سؤال

ولدي تطبيق RCP الكسوف الذي يعرض الكثير (10K +) من الصور الصغيرة بجانب بعضها البعض، مثل شريط الفيلم. لكل صورة، وأنا باستخدام كائن سبحانه وتعالى Image. هذا يستخدم كمية زائدة من الذاكرة والموارد. أنا أبحث عن وسيلة أكثر كفاءة. فكرت في أخذ كل هذه الصور ووصل إليهم عن طريق إنشاء كائن ImageData من إجمالي السليم، عرض متسلسلة (مع ارتفاع ثابت) واستخدام setPixel() لبقية بكسل. ومع ذلك، فإن Palette المستخدمة في البناء ImageData أنا لا يمكن معرفة.

وأنا أيضا بحثت عن تبليط سبحانه وتعالى أو وظيفة الفسيفساء لخلق صورة واحدة من مجموعة من الصور، ولكن وجدت شيئا.

وأي أفكار كيف يمكنني عرض الآلاف من الصور الصغيرة بجانب بعضها البعض بكفاءة؟ يرجى ملاحظة أنه بمجرد أن يتم عرض الصور، لا يتم التلاعب بها، لذلك هذا هو تكلفة لمرة واحدة.

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

المحلول

ويمكنك رسم مباشرة على GC (الرسومات السياق) صورة جديدة (كبيرة). يجب وجود صورة واحدة كبيرة ينتج عنها أقل بكثير من استخدام الموارد الآلاف من الصور الصغيرة (كل صورة في سبحانه وتعالى وتبقي بعض الرسومات OS الكائن مقبض)

وماذا يمكنك أن تجرب شيء من هذا القبيل:

        final List<Image> images;
        final Image bigImage = new Image(Display.getCurrent(), combinedWidth, height);
        final GC gc = new GC(bigImage);
        //loop thru all the images while increasing x as necessary:
        int x = 0;
        int y = 0;
        for (Image curImage : images) {
            gc.drawImage(curImage, x, y);
            x += curImage.getBounds().width;
        }
        //very important to dispose GC!!!
                    gc.dispose();
        //now you can use bigImage

نصائح أخرى

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

وعملت سابقا مع تطبيق جافا لخلق photomosaics، وجدت أنه من الصعب جدا تحقيق الأداء الملائم واستخدام الذاكرة باستخدام التصوير جافا (JAI) المكتبات وتعالى. على الرغم من أننا لا تستخدم ما يقرب من العديد من الصور كما ذكرتم، وطريق واحد إلى الاعتماد على المرافق خارج جافا. على وجه الخصوص، يمكن استخدام يماغيماغيك المساعدة لسطر الأوامر لغرزة معا فسيفساء الخاص بك، وتحميل الذاكرة الانتهاء من القرص. إذا كنت ترغب في الحصول على الهوى، وهناك أيضا API C ++ ليماغيماغيك، وهي فعالة جدا في الذاكرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top