Android 图片在SD卡及包下的存储

原创 2015年07月09日 10:38:14

Android 图片在SD卡及包下的存储

复制代码
public class FileBitmap {
    /**
     * 获取sd卡中的bitmap,bitmap可见
     * 
     * @param bitmap
     *            读取bitmap的路径
     * @return bitmap
     */
    public static Bitmap getBitmapByPath(String fileNameString, String bitmapURL) {
        String bitmapName = bitmapURL.substring(bitmapURL.lastIndexOf("/") + 1);
        fileNameString = fileNameString + "/" + bitmapName;
        BitmapFactory.Options options = new BitmapFactory.Options();
        Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+fileNameString, options);
        return bm;
    }

    /**
     * 在SD卡中存储bitmap,bitmap可见
     * 
     * @param fileName
     *            保存bitmap的文件夹路径
     * @param bitName
     *            bitmap的路径
     * @param mBitmap
     *            要保存的bitmap
     * @throws IOException
     */
    public static void saveMyBitmap(String fileName, String bitmapURL,
            Bitmap mBitmap) throws IOException {
        String bitmapName = bitmapURL.substring(bitmapURL.lastIndexOf("/") + 1); // 传入一个远程图片的url,然后取最后的图片名字
        File tmp = new File(Environment.getExternalStorageDirectory()+fileName);
        
        if (!tmp.exists()) {
            tmp.mkdir();
        }
        File f = new File(Environment.getExternalStorageDirectory()+fileName+"/"+bitmapURL);
        f.createNewFile();
        FileOutputStream fOut = null;
        try {
            fOut = new FileOutputStream(f);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
        
        try {
            fOut.flush();
            fOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /*
     * 保存图片到本地,这个是把图片压缩成字节流然后保存到本地,所以本地的图片是无法显示的
     * 
     * @param mBitmap
     * 
     * @param imageURL
     * 
     * @param cxt
     */
    public static void saveBitmap(Bitmap mBitmap, String imageURL, Context cxt) {

        String bitmapName = imageURL.substring(imageURL.lastIndexOf("/") + 1); // 传入一个远程图片的url,然后取最后的图片名字

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();

        FileOutputStream fos = null;
        ObjectOutputStream oos = null;

        try {
            fos = cxt.openFileOutput(bitmapName, Context.MODE_PRIVATE);
            oos = new ObjectOutputStream(fos);
            oos.writeObject(byteArray);
        } catch (Exception e) {
            e.printStackTrace();
            // 这里是保存文件产生异常
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    // fos流关闭异常
                    e.printStackTrace();
                }
            }
            if (oos != null) {
                try {
                    oos.close();
                } catch (IOException e) {
                    // oos流关闭异常
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 读取本地私有文件夹的图片
     * 
     * @param name
     * @param cxt
     * @return
     */
    public static Bitmap getBitmap(String fileName, Context cxt) {
        String bitmapName = fileName.substring(fileName.lastIndexOf("/") + 1);
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try {
            fis = cxt.openFileInput(bitmapName);
            ois = new ObjectInputStream(fis);
            byte[] byteArray = (byte[]) ois.readObject();
            Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0,
                    byteArray.length);
            return bitmap;
        } catch (Exception e) {
            e.printStackTrace();
            // 这里是读取文件产生异常
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    // fis流关闭异常
                    e.printStackTrace();
                }
            }
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    // ois流关闭异常
                    e.printStackTrace();
                }
            }
        }
        // 读取产生异常,返回null
        return null;
    }

}
复制代码

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Camera存图片到SD卡 及时更新的问题

简单套着网上的例子,做了个Android Camera, 在存储图片的时候遇到了点问题, 如new File后,要检查文件是否存在,如果不存在,才真正调用createNewFile或mkdir() (...
  • happy08god
  • happy08god
  • 2013年07月11日 19:50
  • 9528

Android—将Bitmap图片保存到SD卡目录下或者指定目录

直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.curren...
  • gjy211
  • gjy211
  • 2016年03月13日 00:17
  • 10930

Android数据存储:获取网络图片把图片保存到SD卡中并从SDk卡中读取(通过Bitmap方法)

1、把从布局中获得的图片保存到SD卡中,并把图片在从SD卡中读取出来 2、从网络上获取一张图片的地址,把图片保存到SD卡中,并把网络图片读取出来   程序代码: package com.exa...
  • liusslove
  • liusslove
  • 2016年08月16日 22:05
  • 2694

我的Android之旅(十八)---数据存储--向SD卡保存网络上的图片

加载图片的方法: 方法1:根据URI加载图片 showImge.setImageURI(Uri.parse(path)); 方法2:通过BitmapFactory的静态方法decodeFile(...
  • qq_35146862
  • qq_35146862
  • 2016年08月16日 21:40
  • 508

往手机SD卡、内部存储中读写文本、图片

  • 2016年08月15日 22:09
  • 34.14MB
  • 下载

android 信号强度检测和SD卡存储空间检测

  • 2011年08月23日 09:09
  • 9KB
  • 下载

android SD卡存储数据

  • 2011年05月06日 14:56
  • 1KB
  • 下载

Android数据存储1:文件、SharedPreferences和获取sd卡信息

  • 2014年03月05日 22:21
  • 1.43MB
  • 下载

android 读取和存储sd卡

  • 2015年03月30日 23:23
  • 1.37MB
  • 下载

Android 四种存储 SharedPreferences 内存 SD卡 SQLite数据库

  • 2015年11月10日 17:09
  • 18.56MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 图片在SD卡及包下的存储
举报原因:
原因补充:

(最多只允许输入30个字)