簡體   English   中英

黑莓手機中的圖像瀏覽器

[英]Image Browser in blackberry

我想為我的應用程序制作一個圖像瀏覽器,用戶可以在其中從電話中選擇想要的圖像。 我正在從手機中讀取每個圖像,如下所示:

FileConnection fileConnection = (FileConnection)Connector.open((String) imm.elementAt(i));
InputStream inputStream = fileConnection.openInputStream();
byte[] imageBytes = new byte[(int)fileConnection.fileSize()];
inputStream.read(imageBytes);
inputStream.close();
fileConnection.close();

EncodedImage image = EncodedImage.createEncodedImage(imageBytes, 0, -1);
EncodedImage image1 = scaleImageEncoded.scaleImage(image, (int) (Display.getWidth() / 4) - 10, (int) (Display.getWidth() / 4) - 10);
BrowseBitmapField field = (BrowseBitmapField) manager.getField(i);
field.setBitmap(image1.getBitmap());
field.setEncodedImage(image);

當手機包含許多圖像時,此過程會變得很慢,並且手機需要大量時間才能獲取它們。 有沒有更快的方法可以從手機的內存中讀取圖像並進行顯示?

提前致謝

除了jprofitt建議之外,我還建議您執行以下操作:

  1. 創建圖像的調整大小版本后,可以將其保存以備將來使用。 下次用戶單擊同一圖像時,您首先檢查是否存在調整大小的圖像,如果不存在,則僅讀取/調整原始圖像的大小。 因此,您可以節省花在將來調整大小上的時間+不要忘了調整大小后的圖像文件大小會比原始大小小幾倍,因此將來的讀取速度會更快。

  2. 不要嘗試一次讀取/調整目錄中所有圖像的大小。 僅對當前對用戶可見的對象執行此操作。 例如,如果目錄中有100張圖像,則您很可能需要大量時間來讀取/調整大小/附加以管理所有圖像。 但是,用戶一次只能在屏幕上看到6或8張圖像。 如果用戶向上/向下滾動,則是時候請求讀取/調整大小/等這些現在應該可見但還沒有被讀取/調整大小的圖像。

  3. 讀取/調整大小應在后台Thread上完成,以免阻塞主UI線程。 換句話說,在后台Thread上進行讀取/調整大小時,用戶應該能夠滾動屏幕。 我建議安排讀取/調整大小任務的隊列,並在后台工作Thread上執行它們。 當在工作Thread上完成任務時,是時候使用調整大小的圖像更新屏幕的UI了,然后使用UiApplication.invokeLater(Runnable action)

您可以嘗試使用BufferedInputStream。 我很幸運,它可以加快我的閱讀時間,也可能對你有用。

 BufferedInputStream inputStream = new BufferedInputStream(fileConnection.openInputStream());
 byte[] imageBytes = new byte[(int)fileConnection.fileSize()];
 inputStream.read(imageBytes, 0, imageBytes.length);

在以下URL上發布的人發現您可以從BBThumbs.dat獲得縮略圖並發布一些代碼。 我自己還沒有嘗試過,但是如果成功的話,節省的時間將非常可觀。

http://supportforums.blackberry.com/t5/Java-Development/Thumbnails-work-around/td-p/343870

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM