2016-04-05 14 views
0

Android'de OpenGL ES ile bir tür fotoğraf görüntüleyici oluşturmaya çalışıyorum.Android'de bitmap'i yüklemek ve doku oluşturmak için hızlı yolu

Uygulamamda, temel olarak bir düğmeyi tıklattığımda, sdcard'daki tüm fotoğraf yolları listesini alın, bir fotoğraftan bitmap oluşturun ve bu bitmap olarak doku ayarlayın, ardından basit dörtlilere çizin. Ama bu oldukça yavaş ve böyle queueEvent()

kod parçacıklarını yüzden Dinleyici set GLTHREAD içinde çalışmalıdır doku yapım ve kullanımı

çalışırken bile GL görünümü donduruyor:

public void setTexture(Context context, final String string) { 
Bitmap bitmap = null; 
try { 
    Uri uri = Uri.fromFile(new File(string)); 
    bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri)); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
// upload texture by bitmap 
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); 
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture); 
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 
bitmap.recycle(); 
} 


queueEvent(new Runnable() { 
       @Override 
       public void run() { 
        for (int i = 1; i < photos.size() - 1; i++) { 
         try { 
          exifInterface = new ExifInterface(photoList.get(i)); 
           } catch (IOException e) { 
            e.printStackTrace(); 
           } 
           String orientation = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION); 
           Log.d(TAG, "photoOrientation: " + orientation); 
           photos.get(i).setOrientation(Integer.parseInt(orientation)); 
           photos.get(i).setTexture(mContext, photoList.get(i)); 
          } 
         } 
        }); 

Zamanı kontrol ediyorum, en çok zaman alan iş decodeStream()'dur. Peki bunu nasıl geliştirebilirim? Bitmapi dokuya yüklemek için herhangi bir yol var mı? veya En azından GLView'i dondurmaktan nasıl sakınabilirim?

cevap

0

BitmapFactory.decodeStream() ait kullanmayı deneyin. Daha sonra donmayı keser.

Etkin bitmap yüklemesi için a good training example numaralı belgeye de başvurdum

0

BitmapFactory.decodeFile() yerine GL Konu dışına De sadece değiştirilen yükleme bölümü

İlgili konular