Bitmap的基本使用

xiaoxiao2021-02-28  59

1、Drawable → Bitmap

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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;   } 2、从资源中获取Bitmap

? 1 2 3 Resources res=getResources();   Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic); 3、Bitmap → byte[] ? 1 2 3 4 5 6 7 8 9 private  byte [] Bitmap2Bytes(Bitmap bm){   ByteArrayOutputStream baos =  new  ByteArrayOutputStream();   bm.compress(Bitmap.CompressFormat.PNG,  100 , baos);   return  baos.toByteArray();   } 4、byte[] → Bitmap

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 private  Bitmap Bytes2Bimap( byte [] b){   if (b.length!= 0 ){   return  BitmapFactory.decodeByteArray(b,  0 , b.length);   }   else  {   return  null ;   }   } 5、保存bitmap

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 static  boolean  saveBitmap2file(Bitmap bmp,String filename){   CompressFormat format= Bitmap.CompressFormat.JPEG;   int  quality =  100 ;   OutputStream stream =  null ;   try  {   stream =  new  FileOutputStream( "/sdcard/"  + filename);   }  catch  (FileNotFoundException e) {   // TODO Auto-generated catch block   Generated by Foxit PDF Creator © Foxit Software   http: //www.foxitsoftware.com For evaluation only.   e.printStackTrace();   }   return  bmp.compress(format, quality, stream);   } 6、将图片按自己的要求缩放

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 // 图片源   Bitmap bm = BitmapFactory.decodeStream(getResources()   .openRawResource(R.drawable.dog));   // 获得图片的宽高   int  width = bm.getWidth();   int  height = bm.getHeight();   // 设置想要的大小   int  newWidth =  320 ;   int  newHeight =  480 ;   // 计算缩放比例   float  scaleWidth = (( float ) newWidth) / width;   float  scaleHeight = (( float ) newHeight) / height;   // 取得想要缩放的matrix参数   Matrix matrix =  new  Matrix();   matrix.postScale(scaleWidth, scaleHeight);   // 得到新的图片   Bitmap newbm = Bitmap.createBitmap(bm,  0 ,  0 , width, height, matrix,   true );   // 放在画布上   canvas.drawBitmap(newbm,  0 ,  0 , paint);

7:File图片转Bitmap

? 1 Bitmap bt = BitmapFactory.decodeFile( "/sdcard/myImage/"  +  "head.jpg" ); //图片地址 8://图片转Bitmap

? 1 2 3 4 5 6 7 8 9 public  Bitmap drawableToBitamp( int  drawableResource) {<span style= "white-space:pre" >    </span> //可以取raw里面的资源          BitmapFactory.Options opt =  new  BitmapFactory.Options();          opt.inPreferredConfig = Bitmap.Config.RGB_565;          opt.inPurgeable =  true ;          opt.inInputShareable =  true ;          InputStream is =  this .getResources().openRawResource(drawableResource);          BitmapFactory.decodeStream(is,  null , opt);          return  BitmapFactory.decodeStream(is,  null , opt);      } 来源: http://www.2cto.com/kf/201408/327978.html
转载请注明原文地址: https://www.6miu.com/read-37094.html

最新回复(0)