Android图片位图的剪切的示例代码

  

<强>一、什么是Android中的位图
  

  

位图是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切,旋转,缩放等操作,并可以指定格式保存图像文件。
  

  

<强>二,位图的剪切基本操作
  

  

代码如下:
  公共静态位图createBitmap(位图源,int x, int y, int宽度,int高度,矩阵m,布尔过滤器)
  

  

从原始位图剪切图像,这是一种高级的方式,可以用矩阵(矩)阵来实现旋转等高级方式截图
  

  

参数说明:
  

  

位图来源:要从中截图的原始位图
  

  

int x:起始x坐标
  

  

int y:起始y坐标
  

  

int宽度:要截的图的宽度
  

  

int高度:要截的图的宽度
  

  

Bitmap.Config 配置:一个枚举类型的配置,可以定义截到的新位图的质量
  

  

返回值:返回一个剪切好的位图
  

  

<强>三,位图剪切的封装

  

实际使用中,因为项目需要时常需要对基本功能进行封装,下面是一段封装的代码,仅供参考。
  

        进口java.io.ByteArrayOutputStream;   进口java.io.File;   进口java.io.FileInputStream;   进口java.io.FileNotFoundException;   进口java.io.IOException;   进口java.io.InputStream;   进口java.util.ArrayList;   进口android.content.Context;   进口android.graphics.Bitmap;   进口android.graphics.Bitmap.Config;   进口android.graphics.BitmapFactory;   进口android.graphics.Canvas;   进口android.graphics.Paint;   进口android.graphics.PorterDuff;   进口android.graphics.PorterDuff.Mode;   进口android.graphics.PorterDuffXfermode;   进口android.graphics.Rect;   进口android.graphics.RectF;      公开课BitmapCut   {/* *   *通过资源id转化成位图   *   * @param上下文   * @param渣油   * @return   */公共静态位图ReadBitmapById(上下文语境,int渣油)   {   BitmapFactory。选项选择=new BitmapFactory.Options ();   opt.inPreferredConfig=Bitmap.Config.RGB_565;   opt.inPurgeable=true;   opt.inInputShareable=true;      InputStream是=context.getResources () .openRawResource(渣油);   零,返回BitmapFactory.decodeStream(选择);   }/* *   *设置背景为圆角   *   * @param位图   * @param像素   * @return   */公共静态位图removeYuanjiao(位图的位图,int像素)   {   int宽度=bitmap.getWidth ();   int高度=bitmap.getHeight ();      位图creBitmap=位图。createBitmap(宽度、高度,   android.graphics.Bitmap.Config.ARGB_8888);   帆布画布=新画布(creBitmap);      涂漆=new ();   浮动roundPx=像素;   RectF RectF=new RectF (0, 0, bitmap.getWidth()——像素,   bitmap.getHeight()——像素);   paint.setAntiAlias(真正的);      画布。drawARGB (0, 0, 0, 0);   画布。drawRoundRect (rectF, roundPx、roundPx、油漆);   油漆。setXfermode(新PorterDuffXfermode (PorterDuff.Mode.SRC_IN));      画布。drawBitmap(位图,0,0,油漆);   如果(! bitmap.isRecycled ())   bitmap.recycle ();      返回creBitmap;   }/* *   *按正方形裁切图片   */公共静态位图ImageCrop(位图的位图,布尔isRecycled)   {      如果(位图==null)   {   返回null;   }      int w=bitmap.getWidth ();//得到图片的宽,高   int h=bitmap.getHeight ();      int wh=w比;h & # 63;h: w;//裁切后所取的正方形区域边长      int retX=w比;h & # 63;(w - h)/2: 0;//基于原图,取正方形左上角x坐标   int retY=w比;h & # 63;0:(h - w)/2;      位图bmp位图。createBitmap(位图、retX retY, wh wh,空,   假);   如果(isRecycled,,位图!=零,,! bitmap.equals (bmp)   ,,! bitmap.isRecycled ())   {   bitmap.recycle ();   位图=零;   }//下面这句是关键   返回bmp;//位图。createBitmap(位图、retX retY, wh wh,空,//错误);   }/* *   *按长方形裁切图片   *   * @param位图   * @return   */公共静态位图ImageCropWithRect(位图的位图)   {   如果(位图==null)   {   返回null;   }      int w=bitmap.getWidth ();//得到图片的宽,高   int h=bitmap.getHeight ();      int西北,在北半球,retX retY;   如果(w比;h)   {   西北=h/2;   nh=h;   retX=(w - nw)/2;   retY=0;   其他}   {   西北=w/2;   nh=w;   retX=w/4;   retY=(h - w)/2;   }//下面这句是关键   位图bmp位图。createBitmap(位图、retX retY, nw, nh,空,   假);   如果位图!=零,,! bitmap.equals (bmp),,! bitmap.isRecycled ())   {   bitmap.recycle ();   位图=零;   }   返回bmp;//位图。createBitmap(位图、retX retY, nw, nh,空,//错误);   }/* *   *位图——比;byte []   *   * @param bmp   * @return   */公共静态byte [] readBitmap位图(bmp)   {   ByteArrayOutputStream包=new ByteArrayOutputStream ();   bmp.compress (Bitmap.CompressFormat.JPEG 60包);   试一试   {   baos.flush ();   baos.close ();   }捕捉(IOException e)   {   e.printStackTrace ();   }   返回baos.toByteArray ();   }/* *   *将图像裁剪成圆形   *   * @param位图   * @return   */公共静态位图toRoundBitmap(位图的位图)   {   如果(位图==null)   {   返回null;   }      int宽度=bitmap.getWidth ();   int高度=bitmap.getHeight ();   浮动roundPx;   左浮动,顶部,底部,dst_left, dst_top, dst_right, dst_bottom;   如果(宽度& lt;=身高)   {   roundPx=宽/2;   顶级=0;   底=宽度;   左=0;   正确的=宽度;   身高=宽度;   dst_left=0;   dst_top=0;   dst_right=宽度;   dst_bottom=宽度;   其他}   {   roundPx=身高/2;   浮动夹=(宽度(高度)/2;   左=剪辑;   正确的=宽度-夹;   顶级=0;   底=身高;   宽度=高度;   dst_left=0;   dst_top=0;   dst_right=身高;   dst_bottom=身高;   }      位图输出=位图。createBitmap(宽度、高度、Config.ARGB_8888);   帆布画布=新画布(输出);      最后一个int颜色=0 xff424242;   最终涂漆=new ();   最后矩形src=https://www.yisu.com/zixun/new矩形((int), (int), (int),   (int)底部);   最后矩形dst=new矩形((int) dst_left dst_top (int),   (int) dst_right (int) dst_bottom);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android图片位图的剪切的示例代码