zoukankan      html  css  js  c++  java
  • 【转】Drawable /Bitmap、String/InputStream、Bitmap/byte[]

      原文:http://wuxiaolong.me/2015/08/10/Drawable-to-Bitmap/

    Drawable互转Bitmap

    Drawable转Bitmap

    1
    2
    3
    4
    Resources res = getResources();
    Drawable drawable = res.getDrawable(R.drawable.myimage);
    BitmapDrawable bd = (BitmapDrawable) d;
    Bitmap bm = bd.getBitmap();
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static Bitmap drawableToBitmap(Drawable drawable) {       
    Bitmap bitmap = Bitmap.createBitmap(
    drawable.getIntrinsicWidth(),
    drawable.getIntrinsicHeight(),
    drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
    : Bitmap.Config.RGB_565);
    Canvas canvas = new Canvas(bitmap);
    //canvas.setBitmap(bitmap);
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    drawable.draw(canvas);
    return bitmap;
    }

    Bitmap转Drawable

    1
    2
    3
    4
    5
    6
    7
    8
    Bitmap bm=xxx; //xxx根据你的情况获取
    BitmapDrawable bd=BitmapDrawable(bm);
    BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。

    mPicPath//本地图片路径转成Bitmap格式
    Bitmap pic = BitmapFactory.decodeFile(this.mPicPath);
    image.setImageBitmap(pic);
    转成Bitmap格式

    String与InputStream相互转换

    String to InputStream

    1
    2
    3
    String str = "String与InputStream相互转换";
    InputStream in_nocode = new ByteArrayInputStream(str.getBytes());
    InputStream in_withcode = new ByteArrayInputStream(str.getBytes("UTF-8"));

    InputStream to String

    这里提供几个方法。
    

    方法1:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public String convertStreamToString(InputStream is) {   
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
    while ((line = reader.readLine()) != null) {
    sb.append(line + "/n");
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    is.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    return sb.toString();
    }

    方法2:

    1
    2
    3
    4
    5
    6
    7
    8
    public   String   inputStream2String   (InputStream   in)   throws   IOException   { 
    StringBuffer out = new StringBuffer();
    byte[] b = new byte[4096];
    for (int n; (n = in.read(b)) != -1;) {
    out.append(new String(b, 0, n));
    }
    return out.toString();
    }

    方法3:

    1
    2
    3
    4
    5
    6
    7
    8
    public   static   String   inputStream2String(InputStream   is)   throws   IOException{ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int i=-1;
    while((i=is.read())!=-1){
    baos.write(i);
    }
    return baos.toString();
    }

    Bitmap 和 byte[]互转

    Bitmap → byte[]

    1
    2
    3
    4
    private byte[] Bitmap2Bytes(Bitmap bm){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
    return baos.toByteArray(); }

    byte[] → Bitmap

    1
    2
    3
    4
    5
    6
    7
    8
    private Bitmap Bytes2Bimap(byte[] b){
    if(b.length!=0){
    return BitmapFactory.decodeByteArray(b, 0, b.length);
    }
    else {
    return null;
    }
    }
  • 相关阅读:
    gc buffer busy/gcs log flush sync与log file sync
    给Oracle年轻的初学者的几点建议
    Android 编程下帧动画在 Activity 启动时自动运行的几种方式
    Android 编程下 Touch 事件的分发和消费机制
    Java 编程下 static 关键字
    Java 编程下 final 关键字
    Android 编程下模拟 HOME 键效果
    Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
    Extjs4 大型项目目录结构重构
    [转]SQLServer 2008 允许远程连接的配置方法
  • 原文地址:https://www.cnblogs.com/ryq2014/p/5692864.html
Copyright © 2011-2022 走看看