将图像保存在图库中

时间:2012-08-26 22:47:38

标签: android image save 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;
        }

    } }

我想知道在最后一种情况下要放什么。 如果我不应该把它放在那里我可以被告知究竟是什么?

感谢您的帮助,真的很想把一切都搞砸。

3 个答案:

答案 0 :(得分:11)

保存图库中的任何图像都可以通过以下方式完成:

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

答案 1 :(得分:0)

在onClick Listener中,您可以使用它将图像保存到图库

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();
                    }
                }

答案 2 :(得分:0)

简单地说,您需要一个将图像传递给它的功能。查看整个代码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();
        }
}

在onClick事件中调用函数并将图像作为位图传递给函数。

switch (v.getId()) {

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

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

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