Save image from ImageView to device gallery

后端 未结 3 1262
臣服心动
臣服心动 2021-01-18 18:23

I\'m trying to save an image from ImageView to devices gallery. I tried this code

Code Edit:

    URL url = new URL(getIntent().getStringExtra(\"image         


        
相关标签:
3条回答
  • 2021-01-18 18:42

    Simple:

    use this code:

    //to get the image from the ImageView (say iv)
    BitmapDrawable draw = (BitmapDrawable) iv.getDrawable();
    Bitmap bitmap = draw.getBitmap();
    
    FileOutputStream outStream = null;
    File sdCard = Environment.getExternalStorageDirectory();
    File dir = new File(sdCard.getAbsolutePath() + "/YourFolderName");
    dir.mkdirs();
    String fileName = String.format("%d.jpg", System.currentTimeMillis());
    File outFile = new File(dir, fileName);
    outStream = new FileOutputStream(outFile);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
    outStream.flush();
    outStream.close();
    

    Additionally, in order to refresh the gallery and to view the image there:

        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        intent.setData(Uri.fromFile(file));
        sendBroadcast(intent);
    

    Also make sure that your app has the storage permission enabled:

    Go to Device Settings>Device>Applications>Application Manager>"your app">Permissions>Enable Storage permission!

    Manifest permissions:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    0 讨论(0)
  • 2021-01-18 18:47
    ImageView iv = (ImageView)findViewById(R.id.your_image_view);
    

    Then set your image and when you want to retrieve/save it

    iv.buildDrawingCache();
    
    Bitmap bmp = iv.getDrawingCache();
    

    Then save as normal to gallery

        File storageLoc = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); //context.getExternalFilesDir(null);
    
        File file = new File(storageLoc, filename + ".jpg");
    
        try{
            FileOutputStream fos = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.close();
    
            scanFile(context, Uri.fromFile(file));
    
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    
        private static void scanFile(Context context, Uri imageUri){
            Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            scanIntent.setData(imageUri);
            context.sendBroadcast(scanIntent);
    
        }
    

    and of course make sure your manifest has permissions to write to external storage.

    0 讨论(0)
  • 2021-01-18 18:47

    U can easily get a file from URL

    File f = new File(url.getPath());
    
    0 讨论(0)
提交回复
热议问题