-2
我從以下博客文章中獲得效果工廠教程:http://grishma102.blogspot.in/2013/10/apply-effects-on-image-using-effects.html 在上面的帖子中,drawable是靜態的,並且從drawable資源中挑選出來,我想從設備庫中選擇資源並應用對它的影響,我必須在上述博客文章代碼中做出什麼改變才能實現。從圖庫中選取圖片並應用效果工廠效果
我從以下博客文章中獲得效果工廠教程:http://grishma102.blogspot.in/2013/10/apply-effects-on-image-using-effects.html 在上面的帖子中,drawable是靜態的,並且從drawable資源中挑選出來,我想從設備庫中選擇資源並應用對它的影響,我必須在上述博客文章代碼中做出什麼改變才能實現。從圖庫中選取圖片並應用效果工廠效果
創建一個Intent挑選的圖像從畫廊這樣
創建一個全局變量
private int OPEN_GALLERY = 101
調用下面的意圖上的按鈕或某事的點擊。
Intent intent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(
Intent.createChooser(intent, "Select Picture"),
OPEN_GALLERY);
獲取使用onActivityResult()
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case OPEN_GALLERY:
if (data != null) {
try {
Uri selectedImage = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor c = getApplicationContext().getContentResolver().query(
selectedImage, filePath, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePath[0]);
String picturePath = c.getString(columnIndex);
c.close();
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap bm = BitmapFactory.decodeFile(picturePath,options);
//Pass bitmap to loadtextures method
loadTextures(bm);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
}
通行證位圖所選圖像到loadTextures()
方法這樣
private void loadTextures(Bitmap bm) {
// Generate textures
GLES20.glGenTextures(2, mTextures, 0);
// Load input bitmap
Bitmap bitmap = bm;
mImageWidth = bitmap.getWidth();
mImageHeight = bitmap.getHeight();
mTexRenderer.updateTextureSize(mImageWidth, mImageHeight);
// Upload to texture
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextures[0]);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
// Set texture parameters
GLToolbox.initTexParams();
}
我能得到從畫廊的位圖,但在那之後沒能將位圖設置爲博客文章代碼。 –
抱歉,我沒有注意到您正在使用GLSurfaceView。編輯我的答案。請檢查一下。在'onActivityResult()'方法中調用'loadTextures(bm)'。 – SripadRaj
我做了,但它不會呈現位圖。 –