点击以保存Android照片

时间:2014-12-10 16:02:13

标签: java android

我是Android开发的新手,我正在尝试弄清楚如何在我的应用中点按图片并将其保存到设备中。当点击图像时,我想要一个“保存”按钮出现,当按下该按钮时,应该出现一个吐司,说明图片已保存。在iOS上,我可以使用UIActionSheet执行此操作。

我还应该提一下,使用Picasso从URL下载图像视图图像。

我刚试过这个,它说图片已保存,但当我在手机上看照片应用时,图片就不存在了。

largeImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveButton.setVisibility(View.VISIBLE);
            }
        });

        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
        public void onClick(View v) {
                largeImage.getDrawable();
                Bitmap bitmap = ((BitmapDrawable)largeImage.getDrawable()).getBitmap();

                OutputStream outStream = null;
                File file = new File(storageDirectory, "er.PNG");
                try {
                    outStream = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                    outStream.flush();
                    outStream.close();

                    Toast.makeText(FlickrImageActivity.this, "Saved", Toast.LENGTH_LONG).show();
                }
                catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Toast.makeText(FlickrImageActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                }
                catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(FlickrImageActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                }
                saveButton.setVisibility(View.GONE);
            }
        });

3 个答案:

答案 0 :(得分:1)

String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");    
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

Manifest permission

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

答案 1 :(得分:0)

您可以使用RelativeLayout来包含ImageView和Button。

将它们中心对齐父母

在活动内部,将按钮可见性设置为“已消失”

将ImageView和Button的setOnClickListener调用到您的Activity

在您的活动中实现OnClickListener

在onClick(View v)中,如果单击的视图是ImageView,则将Button的可见性设置为“可见”

在onClick(View v)中,如果单击的视图是Button,则将图像保存到磁盘

**如何将图像保存到磁盘

如果图像源是可绘制资源,请使用BitmapFactory.decodeResource创建位图,然后使用Bitmap.compress导出到特定路径

    建议从Environment.getExternalStoragePublicDirectory 获取
  • 特定路径

然后通知Android刷新图库

MediaScannerConnection.scanFile(context,
new String[] { imagePath }, null,
new MediaScannerConnection.OnScanCompletedListener() {                      
    @Override
    public void onScanCompleted(String path, Uri uri) {
        //....                              
    }
});

然后使用Toast.makeText(context,“message here”)。show();向用户显示消息

答案 2 :(得分:0)

请参阅以下步骤在Android中实现此目的:

 1. Create layout with ImageView & 'Save' named Button

 2.By deafult set 'Save' Button's visibility = gone/invisible

3. Apply click listener on both the views (ImageView & Button)

4. OnClick of ImageView, set 'Save' Button's visibility = visible

5. onclick of save button click call your save image to sdcard logic. Check below link for that.
http://android-er.blogspot.in/2010/07/save-file-to-sd-card.html

希望这会对你有所帮助。