从图库中选择图像并在 imageview 中显示 [英] Select image from gallery and show in imageview

查看:40
本文介绍了从图库中选择图像并在 imageview 中显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在手机中打开我的画廊并选择一张在活动中在imageview中打开的图片..没什么难的..但我有代码并且模拟器(genymotion)中的代码运行完美..但在真机小米Mi4上什么都没有.

I need Open my gallery in mobile phone and select one picture which opened in imageview on activity.. nothing hard.. but I have code and thise code in simulator (genymotion) run perfect.. but on real phone Xiaomi Mi4 nothing.

打开画廊选择项目,什么也没有.

Open gallery select item and nothing.

我没有更多手机:(

我尝试下载一些具有此主题的示例,并且每个示例都相同.. 当我选择项目应用程序什么都不做时打开画廊.

I try download some examples with this theme and every it's the same.. galery open when I select item app doing nothing.

您是否有一些从图库中选择图像并在 imageview 中显示的项目?如果是,请分享您的代码并将我上传到某处 .apk 以供尝试,因为我 .. :( :'(

Have you some project with select image from gallery and show in imageview? if yes please share your code and upload me somewhere .apk for try, because I .. :( :'(

我的毕业证

   apply plugin: 'com.android.application'
android {
    compileSdkVersion 25
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "paradox.galopshop"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }


    }


}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'

        compile 'com.android.support:appcompat-v7:23.2.1'
        compile 'com.android.support:design:23.2.1'

        compile 'com.squareup.picasso:picasso:2.5.2'
    })

    //Add library


    // loaderimage
    compile  'com.android.support:appcompat-v7:25.2.0'
    compile  'com.android.support:design:25.2.0'
    compile  'com.google.firebase:firebase-database:10.2.0'
    compile  'com.android.support.test.espresso:espresso-core:2.2.2'
    compile 'com.google.firebase:firebase-storage:10.2.0'
    compile 'com.google.firebase:firebase-auth:10.2.0'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    compile 'com.google.firebase:firebase-crash:10.2.0'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

谢谢.

Intent i = new Intent();
            i.setType("image/*");
            i.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(i, "Select Picture"),SELECT_PICTURE );

protected  void onActivityResult(int requestCode, int resultCode, Intent data){
    if(resultCode==RESULT_OK){
        if(requestCode==SELECT_PICTURE){
            Uri selectedImageUri = data.getData();
            if (null != selectedImageUri) {
                // Get the path from the Uri
                String path = getPathFromURI(selectedImageUri);

                Log.i("IMAGE PATH TAG", "Image Path : " + path);
                // Set the image in ImageView
                ImageView imageView=(ImageView)findViewById(R.id.imageView2);
                imageView.setImageURI(selectedImageUri);

                TextView tw=(TextView)findViewById(R.id.addimage);
                tw.setText("Načítané");



            }
        }
    }
}

private String getPathFromURI(Uri contentUri) {
    String res = null;
    String[] proj = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
    if (cursor!=null) {
        if (cursor.moveToFirst()) {
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            res = cursor.getString(column_index);
        }
        cursor.close();
    } else {
        Toast.makeText(this, "Cursor null" + proj, Toast.LENGTH_SHORT).show();
    }
    return res;
}

//////更新

protected  void onImageViewClick(){
  //  ImageView imageView=(ImageView)findViewById(R.id.imageView2);
    TextView tw=(TextView)findViewById(R.id.addimage);
    tw.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ImagePicker imgpicker= new ImagePicker();
            imgpicker.getPickImageIntent(getApplicationContext());           
        }
    });

}


            @Override
protected  void onActivityResult(int requestCode, int resultCode, Intent data){

                Bitmap bitmap = ImagePicker.getBitmapFromResult(this, resultCode, data);
                if (null != bitmap && resultCode == RESULT_OK) {

                    ImageView imageView=(ImageView)findViewById(R.id.imageView2);
                    imageView.setImageBitmap(bitmap);

                    TextView tw=(TextView)findViewById(R.id.addimage);
                    tw.setText("Načítané");
                }

///////////////////////编辑2

///////////////////////edit 2

我发现 firebase 崩溃的错误..

I find error with firebase crashed..

然后我确认照片应用程序崩溃了..

Yhen I confirm photo app crashed..

arrow_drop_down
Exception java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=4, result=-1, data=Intent { act=inline-data (has extras) }} to activity {paradox.galopshop/paradox.galopshop.All}: java.lang.NullPointerException: uri
android.app.ActivityThread.deliverResults (ActivityThread.java)
android.app.ActivityThread.handleSendResult (ActivityThread.java)
android.app.ActivityThread.access$1400 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java)
android.os.Handler.dispatchMessage (Handler.java)
android.os.Looper.loop (Looper.java)
android.app.ActivityThread.main (ActivityThread.java)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java)
arrow_drop_down
Caused by java.lang.NullPointerException: uri
com.android.internal.util.Preconditions.checkNotNull (Preconditions.java)
android.content.ContentResolver.openAssetFileDescriptor (ContentResolver.java)
android.content.ContentResolver.openAssetFileDescriptor (ContentResolver.java)
paradox.galopshop.ImagePicker.decodeBitmap (ImagePicker.java:116)
paradox.galopshop.ImagePicker.getImageResized (ImagePicker.java:139)
paradox.galopshop.ImagePicker.getBitmapFromResult (ImagePicker.java:103)
paradox.galopshop.All.onActivityResult (All.java:363)
android.app.Activity.dispatchActivityResult (Activity.java)
android.app.ActivityThread.deliverResults (ActivityThread.java)
android.app.ActivityThread.handleSendResult (ActivityThread.java)
android.app.ActivityThread.access$1400 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java)
android.os.Handler.dispatchMessage (Handler.java)
android.os.Looper.loop (Looper.java)
android.app.ActivityThread.main (ActivityThread.java)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java)

推荐答案

ImagePicker: 请在使用他们的库时感谢开发者

ImagePicker : please credit the developer when using their library

onActivityResult 内的 if 语句中,将 requestCode 更改为 requestCode &0xffff.

In your if statement inside of onActivityResult change requestCode to requestCode & 0xffff.

这里很多人没有注意到的是,返回的 requestCode 返回的是十六进制数,而不是数字.

What many people don't notice here is that the requestCode that is coming back is coming back as a hex number not as a digit number.

在您的 AndroidManifest.xml 中添加以下权限:

In your AndroidManifest.xml add these permissions:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

使用此方法拾取图像:

protected  void onImageViewClick(){
  //  ImageView imageView=(ImageView)findViewById(R.id.imageView2);
    TextView tw=(TextView)findViewById(R.id.addimage);
    tw.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            selectImage();
        }
    });

}


private void selectImage() {
    Intent takeImageIntent = ImagePicker.getPickImageIntent(this);
    if (takeImageIntent.resolveActivity(getActivity().getPackageManager()) != null) {
        startActivityForResult(takeImageIntent, REQUEST_IMAGE_CAPTURE);
    }
}

然后用它来接收它们:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Bitmap bitmap = ImagePicker.getBitmapFromResult(this, resultCode, data);
    if (null != bitmap && resultCode == RESULT_OK) {
    //do what you want with the bitmap here

   }
}

这篇关于从图库中选择图像并在 imageview 中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆