Android BitmapUtils工具类使用详解
本文实例为大家分享了AndroidBitmapUtils工具类的具体代码,供大家参考,具体内容如下
publicfinalclassBitmapUtils{ publicstaticfinalStringTAG="BitmapUtil"; privatestaticintsShotScreenWidth=480; privatestaticintsShotScreenHeight=720; privatestaticintsShotScreenSize=sShotScreenWidth*sShotScreenHeight; @SuppressLint("StaticFieldLeak") privatestaticContextmContext; @SuppressLint("StaticFieldLeak") privatestaticActivitymActivity; publicvoidinit(Contextcontext,Activityac){ mContext=context; mActivity=ac; DisplayMetricsdm=newDisplayMetrics(); ac.getWindowManager().getDefaultDisplay().getMetrics(dm); //获取屏幕分辨率 sShotScreenWidth=dm.widthPixels; sShotScreenHeight=dm.heightPixels; sShotScreenSize=sShotScreenWidth*sShotScreenHeight; } /** *图片合成 * *@parambitmap位图1 *@parammark位图2 *@returnBitmap */ publicstaticBitmapcreateBitmap(Bitmapbitmap,Bitmapmark){ intw=bitmap.getWidth(); inth=bitmap.getHeight(); intmW=mark.getWidth(); intmH=mark.getHeight(); Bitmapnewbitmap=Bitmap.createBitmap(w,h,Config.ARGB_8888);//创建一个长宽一样的位图 Canvascv=newCanvas(newbitmap); cv.drawBitmap(bitmap,0,0,null);//在0,0坐标开始画入bitmap cv.drawBitmap(mark,w-mW,h-mH,null);//在右下角画入水印mark cv.save(Canvas.ALL_SAVE_FLAG);//保存 cv.restore();//存储 returnnewbitmap; } /** *放大缩小图片 *@parambitmap位图 *@paramw新的宽度 *@paramh新的高度 *@returnBitmap */ publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){ intwidth=bitmap.getWidth(); intheight=bitmap.getHeight(); Matrixmatrix=newMatrix(); floatscaleWidht=((float)w/width); floatscaleHeight=((float)h/height); matrix.postScale(scaleWidht,scaleHeight); returnBitmap.createBitmap(bitmap,0,0,width,height,matrix,true); } /** *旋转图片 *@parambitmap要旋转的图片 *@paramangle旋转角度 *@returnbitmap */ publicstaticBitmaprotate(Bitmapbitmap,intangle){ Matrixmatrix=newMatrix(); matrix.postRotate(angle); returnBitmap.createBitmap(bitmap,0,0,bitmap.getWidth(), bitmap.getHeight(),matrix,true); } /** *圆形图片 *@paramsource位图 *@paramstrokeWidth裁剪范围0表示最大 *@parambl是否需要描边 *@parambl画笔粗细 *@parambl颜色代码 *@returnbitmap */ publicstaticBitmapcreateCircleBitmap(Bitmapsource,intstrokeWidth,booleanbl,intedge,intcolor){ intdiameter=source.getWidth()1){ //缩放图片此处用到平方根将宽带和高度压缩掉对应的平方根倍 //(保持宽高不变,缩放后也达到了最大占用空间的大小) returnscaleWithWH(bitmap,bitmap.getWidth()/Math.sqrt(i), bitmap.getHeight()/Math.sqrt(i)); } returnnull; } /*** *图片缩放 *@parambitmap位图 *@paramw新的宽度 *@paramh新的高度 *@returnBitmap */ publicstaticBitmapscaleWithWH(Bitmapbitmap,doublew,doubleh){ if(w==0||h==0||bitmap==null){ returnbitmap; }else{ intwidth=bitmap.getWidth(); intheight=bitmap.getHeight(); Matrixmatrix=newMatrix(); floatscaleWidth=(float)(w/width); floatscaleHeight=(float)(h/height); matrix.postScale(scaleWidth,scaleHeight); returnBitmap.createBitmap(bitmap,0,0,width,height, matrix,true); } } /** *YUV视频流格式转bitmap *@paramdataYUV视频流格式 *@returnwidth设置宽度 *@returnwidth设置高度 */ publicstaticBitmapgetBitmap(byte[]data,intwidth,intheight){ Bitmapbitmap; YuvImageyuvimage=newYuvImage(data,ImageFormat.NV21,width,height,null); //data是onPreviewFrame参数提供 ByteArrayOutputStreambaos=newByteArrayOutputStream(); yuvimage.compressToJpeg(newRect(0,0,yuvimage.getWidth(),yuvimage.getHeight()),100,baos);// //80--JPG图片的质量[0-100],100最高 byte[]rawImage=baos.toByteArray(); BitmapFactory.Optionsoptions=newBitmapFactory.Options(); SoftReference softRef=newSoftReference (BitmapFactory.decodeByteArray(rawImage,0,rawImage .length,options)); bitmap=softRef.get(); returnbitmap; } /** *图片路径转bitmap *@paramfile图片的绝对路径 *@returnbitmap */ publicstaticBitmapgetAssetImage(Stringfile){ Bitmapbitmap=null; AssetManageram=mActivity.getAssets(); try{ InputStreamis=am.open(file); bitmap=BitmapFactory.decodeStream(is); is.close(); }catch(IOExceptione){ e.printStackTrace(); } returnbitmap; } /** *bitmap保存到指定路径 *@paramfile图片的绝对路径 *@paramfile位图 *@returnbitmap */ publicstaticbooleansaveFile(Stringfile,Bitmapbmp){ if(TextUtils.isEmpty(file)||bmp==null)returnfalse; Filef=newFile(file); if(f.exists()){ f.delete(); }else{ Filep=f.getParentFile(); if(!p.exists()){ p.mkdirs(); } } try{ FileOutputStreamout=newFileOutputStream(f); bmp.compress(Bitmap.CompressFormat.JPEG,100,out); out.flush(); out.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); returnfalse; } returntrue; } /** *回收一个未被回收的Bitmap *@parambitmap */ publicstaticvoiddoRecycledIfNot(Bitmapbitmap){ if(!bitmap.isRecycled()){ bitmap.recycle(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。