How do I save my imageView image into Gallery (Android Development)

前端 未结 5 2071
逝去的感伤
逝去的感伤 2021-01-05 17:01

I am trying to create an onClick event to save an imageview into the phone Gallery by the click of a Button, below is my code. it does not save into the Gallery, can anyone

相关标签:
5条回答
  • 2021-01-05 17:27

    I do this to save Image in gallery.

    private void saveImageToGallery(){
        imageview.setDrawingCacheEnabled(true);
        Bitmap b = imageview.getDrawingCache();
        Images.Media.insertImage(getActivity().getContentResolver(), b,title, description);
    }
    

    insertImage() will return a String != null if image has been really saved. Also: Needs permission in the manifest as "android.permission.WRITE_EXTERNAL_STORAGE" And note that this puts the image at the bottom of the list of images already in the gallery.

    Hope this helps.

    0 讨论(0)
  • 2021-01-05 17:29

    You have to save the image to media provider. Here is a simple example:

    Uri saveMediaEntry(String imagePath,String title,String description,long dateTaken,int orientation,Location loc) {
    ContentValues v = new ContentValues();
    v.put(Images.Media.TITLE, title);
    v.put(Images.Media.DISPLAY_NAME, displayName);
    v.put(Images.Media.DESCRIPTION, description);
    v.put(Images.Media.DATE_ADDED, dateTaken);
    v.put(Images.Media.DATE_TAKEN, dateTaken);
    v.put(Images.Media.DATE_MODIFIED, dateTaken) ;
    v.put(Images.Media.MIME_TYPE, “image/jpeg”);
    v.put(Images.Media.ORIENTATION, orientation);
    File f = new File(imagePath) ;
    File parent = f.getParentFile() ;
    String path = parent.toString().toLowerCase() ;
    String name = parent.getName().toLowerCase() ;
    v.put(Images.ImageColumns.BUCKET_ID, path.hashCode());
    v.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);
    v.put(Images.Media.SIZE,f.length()) ;
    f = null ;
    if( targ_loc != null ) {
    v.put(Images.Media.LATITUDE, loc.getLatitude());
    v.put(Images.Media.LONGITUDE, loc.getLongitude());
    }
    v.put(“_data”,imagePath) ;
    ContentResolver c = getContentResolver() ;
    return c.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, v);
    }
    
    0 讨论(0)
  • 2021-01-05 17:31
    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        File f = new File(mCurrentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    }
    

    Check this out: http://developer.android.com/training/camera/photobasics.html#TaskGallery

    0 讨论(0)
  • 2021-01-05 17:37
    public static void addImageToGallery(final String filePath, final Context context) {
    
        ContentValues values = new ContentValues();
    
        values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
        values.put(Images.Media.MIME_TYPE, "image/jpeg");
        values.put(MediaStore.MediaColumns.DATA, filePath);
    
        context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
    }
    
    0 讨论(0)
  • 2021-01-05 17:42

    Suppose the ImageView already keeps the image that you want to save, first, get the Bitmap

    imageView.buildDrawingCache();
    Bitmap bm=imageView.getDrawingCache();
    

    Then save it with below code:-

    MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);
    

    And do not forget to set this permission in your manifest:-

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    0 讨论(0)
提交回复
热议问题