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;
    }
    }
  • 相关阅读:
    Linux 相关scsi命令
    存储
    Multipath多路径冗余全解析
    Oracle中alter system命令参数之scope
    scipy安装失败
    font
    查看端口占用
    oracle参数优化
    组播
    sql给整数补零
  • 原文地址:https://www.cnblogs.com/ryq2014/p/5692864.html
Copyright © 2011-2022 走看看