1、将Bitmap对象读到字节数组中

ByteArrayOutputStream baos = new ByteArrayOutputStream();  bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);  byte[] datas = baos.toByteArray();  

2、将字节数组转为Bitmap对象

byte[] b = getIntent().getByteArrayExtra("bitmap");  Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);  

3、图片文件转为Bitmap对象 

String filePath=”c:/01.jpg”;Bitmap bitmap=BitmapFactory.decodeFile(filePath);

注:

如果图片过大,可能导致Bitmap对象装不下图片 解决办法: String filePath=”c:/01.jpg”; Bitmap bitmap=BitmapFactory.decodeFile(filePath,getBitmapOption(2)); //将图片的长和宽缩小味原来的1/2private Options getBitmapOption(int inSampleSize){ System.gc(); BitmapFactory.Options options = new BitmapFactory.Options(); options.inPurgeable = true; options.inSampleSize = inSampleSize; return options; }

4、Bitmap对象保存图片文件 

public void saveBitmapFile(Bitmap bitmap){ File file=new File(“/mnt/sdcard/pic/01.jpg”);//将要保存图片的路径 try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } catch (IOException e) { e.printStackTrace(); } }

5、bitmap和base64之间的转换

/** * bitmap转为base64 * @param bitmap * @return */public static String bitmapToBase64(Bitmap bitmap) { String result = null;ByteArrayOutputStream baos = null;try {if (bitmap != null) {baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); baos.flush();baos.close(); byte[] bitmapBytes = baos.toByteArray();result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);}} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.flush();baos.close();}} catch (IOException e) {e.printStackTrace();}}return result;} /** * base64转为bitmap * @param base64Data * @return */public static Bitmap base64ToBitmap(String base64Data) {byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);}

6、网络图片Url 转 Bitmap(须在子线程)

public Bitmap getBitmap(String url) {        Bitmap bm = null;        try {            URL iconUrl = new URL(url);            URLConnection conn = iconUrl.openConnection();            HttpURLConnection http = (HttpURLConnection) conn;                        int length = http.getContentLength();                        conn.connect();            // 获得图像的字符流            InputStream is = conn.getInputStream();            BufferedInputStream bis = new BufferedInputStream(is, length);            bm = BitmapFactory.decodeStream(bis);            bis.close();            is.close();// 关闭流        }        catch (Exception e) {            e.printStackTrace();        }        return bm;    }

7、将view转为bitmap

//1.0public static Bitmap getBitmapFromView(View view){    // Define a bitmap with the same size as the view    Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);    // Bind a canvas to it    Canvas canvas = new Canvas(returnedBitmap);    // Get the view's background    Drawable bgDrawable = view.getBackground();    if (bgDrawable != null)        // has background drawable, then draw it on the canvas        bgDrawable.draw(canvas);    else        // does not have background drawable, then draw white background on        // the canvas        canvas.drawColor(Color.WHITE);    // draw the view on the canvas    view.draw(canvas);    // return the bitmap    return returnedBitmap;}//2.0public static Bitmap viewToBitmap(View view){    view.setDrawingCacheEnabled(true);    view.buildDrawingCache();    Bitmap bm = view.getDrawingCache();    return bm;}

8、图片转为文件

public static boolean saveBitmap2file(Bitmap bmp){    CompressFormat format = Bitmap.CompressFormat.PNG;    int quality = 100;    OutputStream stream = null;    try    {        // 判断SDcard状态        if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))        {            // 错误提示            return false;        }                                                                                                                                                                                                                                                                                                                // 检查SDcard空间        File SDCardRoot = Environment.getExternalStorageDirectory();        if (SDCardRoot.getFreeSpace() < 10000)        {            // 弹出对话框提示用户空间不够            Log.e("Utils", "存储空间不够");            return false;        }                                                                                                                                                                                                                                                                                                                // 在SDcard创建文件夹及文件        File bitmapFile = new File(SDCardRoot.getPath() + FILE_PATH);        bitmapFile.getParentFile().mkdirs();// 创建文件夹        stream = new FileOutputStream(SDCardRoot.getPath() + FILE_PATH);// "/sdcard/"    }    catch (FileNotFoundException e)    {        e.printStackTrace();    }    return bmp.compress(format, quality, stream);}

 

更多相关文章

  1. Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
  2. android 资源文件
  3. 【android】可放大缩小图片位置点击位置获取
  4. Android将获取到文件的uri转换为字符串的路径
  5. Android 将drawable下的图片转换成bitmap、Drawable
  6. Android之文件搜索工具类
  7. Android写sys文件节点

随机推荐

  1. go语言的init函数详解
  2. go语言​中的包引入、函数、变量使用
  3. golang defer什么时候执行
  4. Go语言并发机制图文详解
  5. go语言查看环境信息的方法
  6. golang context用来干吗
  7. 在go modules里使用go get进行包管理的介
  8. Go生成go动态库或静态库的方法
  9. golang channel有什么好处
  10. golang channel是什么