Save Image in Gallery

不问归期 提交于 2019-12-08 18:24:50

问题


This is my code and I want the save image button to simply save the image to the gallery.

package com.nk_apps.hip.hop.lyric.wallpapers;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class Wallpapers extends Activity implements OnClickListener {
}
    ImageView display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wallpapers);

        display = (ImageView) findViewById(R.id.IVDisplay);
        ImageView image1 = (ImageView) findViewById(R.id.IVimage1);
        ImageView image2 = (ImageView) findViewById(R.id.IVimage2);
        ImageView image3 = (ImageView) findViewById(R.id.IVimage3);
        ImageView image4 = (ImageView) findViewById(R.id.IVimage4);
        ImageView image5 = (ImageView) findViewById(R.id.IVimage5);
        ImageView image6 = (ImageView) findViewById(R.id.IVimage6);
        ImageView image7 = (ImageView) findViewById(R.id.IVimage7);
        ImageView image8 = (ImageView) findViewById(R.id.IVimage8);
        ImageView image9 = (ImageView) findViewById(R.id.IVimage9);
        Button saveImage = (Button) findViewById(R.id.bSaveImage);

        image1.setOnClickListener(this);
        image2.setOnClickListener(this);
        image3.setOnClickListener(this);
        image4.setOnClickListener(this);
        image5.setOnClickListener(this);
        image6.setOnClickListener(this);
        image7.setOnClickListener(this);
        image8.setOnClickListener(this);
        image9.setOnClickListener(this);
        saveImage.setOnClickListener(this);
    }

    public void onClick(View v) {
        // TODO Auto-generated method stub

        switch (v.getId()) {

        case R.id.IVimage1:
            display.setImageResource(R.drawable.aotl);
            break;
        case R.id.IVimage2:
            display.setImageResource(R.drawable.ball_so_hard);
            break;
        case R.id.IVimage3:
            display.setImageResource(R.drawable.eye);
            break;
        case R.id.IVimage4:
            display.setImageResource(R.drawable.faded);
            break;
        case R.id.IVimage5:
            display.setImageResource(R.drawable.hiii_power);
            break;
        case R.id.IVimage6:
            display.setImageResource(R.drawable.i_invented_swag);
            break;
        case R.id.IVimage7:
            display.setImageResource(R.drawable.lifes_a_bitch);
            break;
        case R.id.IVimage8:
            display.setImageResource(R.drawable.mack_truck);
            break;
        case R.id.IVimage9:
            display.setImageResource(R.drawable.opposite);
            break;
        case R.id.bSaveImage:

            break;
        }

    } }

I want to know what to put under the last case. And if I shouldn't put it there could I be told how exactly?

Thanks for any help, really struggling with taking everything in.


回答1:


Saving any image in the Gallery can be done by :

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



回答2:


In an onClick Listener, you can use this to save your image to gallery,

FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame);
                    Random fCount = new Random();
                    int roll = fCount.nextInt(600) + 1;
                    File file = new File(Environment
                            .getExternalStorageDirectory()
                            + File.separator
                            + "/your_folder_name/" + String.valueOf(roll) + ".png");

                    Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(),
                            mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
                    Canvas c = new Canvas(b);
                    mainLayout.draw(c);
                    FileOutputStream fos = null;
                    try {
                        fos = new FileOutputStream(file);
                        if (fos != null) {
                            b.compress(Bitmap.CompressFormat.PNG, 90, fos);
                            fos.close();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }



回答3:


Simply, you need a function that you will pass your images to it. See the entire code how to save image to gallery in android programmatically

private void saveImageToExternalStorage(Bitmap finalBitmap) {
        String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
        File myDir = new File(root + "/saved_images_1");
        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();
        }
}

On your onClick event call your function and pass your images as bitmap to the function.

switch (v.getId()) {

        case R.id.IVimage1:
           saveImageToExternalStorage(img1);
       break;

       case R.id.IVimage2:
           saveImageToExternalStorage(img2);
       break;

       case R.id.IVimage3:
           saveImageToExternalStorage(img3);
       break;
}


来源:https://stackoverflow.com/questions/12134535/save-image-in-gallery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!