从库选择图像到内部应用程序图片目录Android的文件复制

时间:2016-12-30 10:11:38

标签: android image android-intent android-camera-intent android-image-capture

从图库图片中获取图像内容  现在,我想将此image file(从图库中选取)复制到我的内部应用程序文件夹PICTURE目录(/storage/emulated/0/Android/data/MYApppackage/files/Pictures/)。

我正在new File中创建PICTURE Directory。文件在内部AppDir / data / Pictures Directory中创建,图片以.JPG格式创建,但不显示图片。图像不可见。图像文件使用0KB数据创建。

我认为它是一个文件写作相关问题或其他我不知道。

 Intent intent ;
            if (Build.VERSION.SDK_INT < 19) {
                intent = new Intent();
                intent.setAction(Intent.ACTION_GET_CONTENT);
                intent.setType("image/*");
                MainActivity.state = "AddBalance";

                startActivityForResult(intent, REQUEST_GALLERY);
            } else {
                intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                intent.setType("image/*");

                startActivityForResult(intent, REQUEST_GALLERY);
            }

Gallery PickUp的OnActivity结果

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
 case REQUEST_GALLERY:
            if (data != null) {


if (data != null) {
                Bitmap bitmap=null;
                uri1 = data.getData();
       //         showPhotoDialog(uri1);
                try {
                //    bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri1);
                    InputStream image_stream = getActivity().getContentResolver().openInputStream(uri1);
                     bitmap= BitmapFactory.decodeStream(image_stream);


                } catch (IOException e) {
                    e.printStackTrace();
                }
                Log.e(TAG,"Data URI----"+data.getData());
                    try {
                        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                        String imageFileName = "PNG_" + timeStamp + "_";
                        File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
                        File image = File.createTempFile(
                                imageFileName, //  prefix
                                ".PNG",        //  suffix
                                storageDir    //   directory
                        );

                     //   File imageFile= new File(storageDir,imageFileName);
                        FileOutputStream out;
                        try {
                           // out = getActivity().openFileOutput(image.getName(), Context.MODE_PRIVATE);
                            out = new FileOutputStream(image.getName());
                          /*  ByteArrayOutputStream stream = new ByteArrayOutputStream();
                            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                            byte[] byteArray = stream.toByteArray();
                           out.write(byteArray);*/
                           bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
                            out.close();
                        } catch (Exception e) {e.printStackTrace();}
//         copyFile(new File(getRealPathFromURI(uri1)), image);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();

            }

            }`
     }

修改:信息

从照片库图片中获取uri1的值:content://com.android.providers.media.documents/document/image%3A25877

我正在尝试将位图写入File。这是我的代码。来自getBitmapREQUEST_GALLERY的{​​{1}}工作正常。我正在URI目录中创建文件并通过Enviroment.PICTURE写入。但仍然是档案:OutPutStream

我也试过了PNG_54342323111.PNG你可以在评论中看到但是没有用。也试过ByteArrayOutputStream但没有工作。

0 个答案:

没有答案