如何将imageView图像保存到图库(Android开发)

She*_*Lin 5 android image gallery save imageview

我正在尝试创建一个onClick事件,通过单击按钮将imageview保存到手机库中,下面是我的代码.它没有存入画廊,任何人都可以帮我找出原因吗?

    sharebtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View b) {
            // TODO Auto-generated method stub
            //attempt to save the image

            b = findViewById(R.id.imageView);
            b.setDrawingCacheEnabled(true);
                Bitmap bitmap = b.getDrawingCache();
                //File file = new File("/DCIM/Camera/image.jpg");
                File root = Environment.getExternalStorageDirectory();
                File cachePath = new File(root.getAbsolutePath() + "/DCIM/Camera/image.jpg");
                try 
                {
                    cachePath.createNewFile();
                    FileOutputStream ostream = new FileOutputStream(cachePath);
                    bitmap.compress(CompressFormat.JPEG, 100, ostream);
                    ostream.close();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }

        }
    });
Run Code Online (Sandbox Code Playgroud)

小智 6

我这样做是为了在图库中保存图像.

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

insertImage()将返回一个String != nullif图像真的已保存.另外:需要清单中的权限为"android.permission.WRITE_EXTERNAL_STORAGE"并注意这会将图像放在图库列表的底部.

希望这可以帮助.


Jus*_*ian 1

您必须将图像保存到媒体提供商。这是一个简单的例子:

\n\n
Uri saveMediaEntry(String imagePath,String title,String description,long dateTaken,int orientation,Location loc) {\nContentValues v = new ContentValues();\nv.put(Images.Media.TITLE, title);\nv.put(Images.Media.DISPLAY_NAME, displayName);\nv.put(Images.Media.DESCRIPTION, description);\nv.put(Images.Media.DATE_ADDED, dateTaken);\nv.put(Images.Media.DATE_TAKEN, dateTaken);\nv.put(Images.Media.DATE_MODIFIED, dateTaken) ;\nv.put(Images.Media.MIME_TYPE, \xe2\x80\x9cimage/jpeg\xe2\x80\x9d);\nv.put(Images.Media.ORIENTATION, orientation);\nFile f = new File(imagePath) ;\nFile parent = f.getParentFile() ;\nString path = parent.toString().toLowerCase() ;\nString name = parent.getName().toLowerCase() ;\nv.put(Images.ImageColumns.BUCKET_ID, path.hashCode());\nv.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);\nv.put(Images.Media.SIZE,f.length()) ;\nf = null ;\nif( targ_loc != null ) {\nv.put(Images.Media.LATITUDE, loc.getLatitude());\nv.put(Images.Media.LONGITUDE, loc.getLongitude());\n}\nv.put(\xe2\x80\x9c_data\xe2\x80\x9d,imagePath) ;\nContentResolver c = getContentResolver() ;\nreturn c.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, v);\n}\n
Run Code Online (Sandbox Code Playgroud)\n