如何从绘制资源到SD卡上保存的图像? [英] How to save image from drawable resource to sd card?

查看:203
本文介绍了如何从绘制资源到SD卡上保存的图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我必须像下面的图片上的景色。另外,我将添加一个保存按钮。您还可以看看我的XML文件。我用这code。通过pressing下一个和previous按钮加载从绘制图像的文件夹:

 公共无效的onClick(视图v){
        开关(v.getId()){        案例R.id.bNext:
            一个++;
            setImage(一);
            打破;
        案例R.id.b previous:
            如果(一个大于0)
            {
                一个 - ;
                setImage(一);
                打破;
            }
        }
    }
    私人无效setImage(int类型的){
        如果(A == 0)
        {
        slika.setImageResource(R.drawable.l2);
        一个= 1;
        }
        否则如果(一个== 1)
        {
        slika.setImageResource(R.drawable.l3);
        一个= 2;
        }
        否则如果(一个== 2)
        {
        slika.setImageResource(R.drawable.l4);
        一个= 3;
        }
        否则,如果(A == 3)
        {
        slika.setImageResource(R.drawable.l5);
        一个= 4;
        }
        否则,如果(A == 4)
        {
        slika.setImageResource(R.drawable.l6);
        1 = 5;
        }





        否则,如果(A == 55)
        {
        slika.setImageResource(R.drawable.l57);
        A = 56;
        }
        }

我需要保存为当前在屏幕上的图像。我发现计算器一些答案,但这些都与已知名字的特定形象。我不知道,用户将要保存什么样的形象。

 <?XML版本=1.0编码=UTF-8&GT?;
    <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:layout_width =match_parent
        机器人:layout_height =FILL_PARENT
        机器人:比重=中心>                < ImageView的
            机器人:ID =@ + ID / imageView1
            机器人:layout_width =FILL_PARENT
            机器人:layout_height =FILL_PARENT
            机器人:layout_centerHorizo​​ntal =真/>        <按钮
            机器人:ID =@ + ID / bMenu
            机器人:layout_width =80dp
            机器人:layout_height =35dp
            机器人:layout_alignParentBottom =真
            机器人:layout_marginBottom =10dp
            机器人:layout_marginLeft =120dp
            机器人:背景=@绘制/按钮
            机器人:比重=中心
            机器人:填充=0dp
            机器人:文字=菜单
            机器人:文字颜色=#FFFFFF
            机器人:TEXTSIZE =23dp/>        <按钮
            机器人:ID =@ + ID / bnext编辑
            机器人:layout_width =80dp
            机器人:layout_height =35dp
            机器人:layout_alignParentBottom =真
            机器人:layout_marginBottom =10dp
            机器人:layout_marginLeft =220DP
            机器人:背景=@绘制/按钮
            机器人:填充=0dp
            机器人:文字=下一步
            机器人:TEXTSIZE =23dp
            机器人:文字颜色=#FFFFFF/>        <按钮
            机器人:ID =@ + ID / B previous
            机器人:layout_width =80dp
            机器人:layout_height =35dp
            机器人:layout_alignParentBottom =真
            机器人:layout_marginBottom =10dp
            机器人:layout_marginLeft =20dp
            机器人:背景=@绘制/按钮
            机器人:比重=中心
            机器人:填充=0dp
            机器人:文字=previous
            机器人:文字颜色=#FFFFFF
            机器人:TEXTSIZE =23dp/>    < / RelativeLayout的>


解决方案

 无效保存(){
字符串的文件夹=/ SD卡/图片/ MyAppFolder
       ImageView的观点=(ImageView的)findViewById(R.id.cachesView);          view.buildDrawingCache();        位图yourBitmap = view.getDrawingCache();
          最终文件MYDIR =新的文件(文件夹);
                myDir.mkdirs();
                最后随机发生器=新的随机();
                INT N = 10000;
                N = generator.nextInt(N);
                最后弦乐FNAME =StyleMe-+ N +巴纽;
                档案文件=新的文件(MYDIR,FNAME);
                如果(file.exists())
                    FileOutputStream中出=新的FileOutputStream(文件);
                    yourBitmap.com preSS(比较pressFormat.JPEG,100,出);
                    了out.flush();
                    out.close();
                    sendBroadcast(新意图(Intent.ACTION_MEDIA_MOUNTED,
                            Uri.parse(文件://
                                    + Environment.getExternalStorageDirectory()))); //这将刷新库的应用程序。
                    Toast.makeText(getApplication(),图像保存,Toast.LENGTH_SHORT)
                            。显示();
    }

请参阅

在你的类并点击按钮,就可把添加这个方法

 保存();

So, i have a view like on the image below. Plus I will add a Save button. You can also see my XML file. I am using this code to load image from drawable folder by pressing the next and previous buttons:

public void onClick(View v) {
        switch (v.getId()){

        case R.id.bNext:
            a++;
            setImage(a);
            break;
        case R.id.bPrevious:
            if(a>0)
            {
                a--;
                setImage(a);  
                break;
            }
        }
    }
    private void setImage(int a){
        if (a == 0)
        {
        slika.setImageResource(R.drawable.l2);
        a = 1;
        }
        else if (a == 1)
        {
        slika.setImageResource(R.drawable.l3);
        a = 2;
        }
        else if (a == 2)
        {
        slika.setImageResource(R.drawable.l4);
        a = 3;
        }
        else if (a == 3)
        {
        slika.setImageResource(R.drawable.l5);
        a = 4;
        }
        else if (a == 4)
        {
        slika.setImageResource(R.drawable.l6);
        a = 5;
        }
.
.
.
.
.
        else if (a == 55)
        {
        slika.setImageResource(R.drawable.l57);
        a = 56;
        }
        }

I need to save the image that is currently on the screen. I found some answers on stackoverflow, but those are all for specific image with known name. I don't know what image a user will want to save.

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:gravity="center">

                <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerHorizontal="true"/>

        <Button
            android:id="@+id/bMenu"
            android:layout_width="80dp"
            android:layout_height="35dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="120dp"
            android:background="@drawable/buttons"
            android:gravity="center"
            android:padding="0dp"
            android:text="Menu"
            android:textColor="#ffffff"
            android:textSize="23dp" />

        <Button
            android:id="@+id/bNext"
            android:layout_width="80dp"
            android:layout_height="35dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="220dp"
            android:background="@drawable/buttons"
            android:padding="0dp"
            android:text="Next"
            android:textSize="23dp"
            android:textColor="#ffffff" />

        <Button
            android:id="@+id/bPrevious"
            android:layout_width="80dp"
            android:layout_height="35dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="20dp"
            android:background="@drawable/buttons"
            android:gravity="center"
            android:padding="0dp"
            android:text="Previous"
            android:textColor="#ffffff"
            android:textSize="23dp" />

    </RelativeLayout>

解决方案

  void Save(){  
String folder = "/sdcard/Pictures/MyAppFolder";
       Imageview  view = (ImageView)findViewById(R.id.cachesView);

          view.buildDrawingCache(); 

        Bitmap yourBitmap = view.getDrawingCache();  
          final File myDir = new File(folder);
                myDir.mkdirs();
                final Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                final String fname = "StyleMe-" + n + ".png";
                File file = new File(myDir, fname);
                if (file.exists())
                    FileOutputStream out = new FileOutputStream(file);
                    yourBitmap.compress(CompressFormat.JPEG, 100, out);
                    out.flush();
                    out.close();
                    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                            Uri.parse("file://"
                                    + Environment.getExternalStorageDirectory()))); // this will refresh the gallery app.
                    Toast.makeText(getApplication(), "Image Saved", Toast.LENGTH_SHORT)
                            .show();
    }

please see

add this method in your class and on click button put

Save();

这篇关于如何从绘制资源到SD卡上保存的图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆