非常实用的Android图片工具类
本文实例为大家分享了Android图片工具类的具体代码,供大家参考,具体内容如下
importjava.io.ByteArrayOutputStream; importjava.io.File; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importandroid.content.Context; importandroid.graphics.Bitmap; importandroid.graphics.Bitmap.CompressFormat; importandroid.graphics.Bitmap.Config; importandroid.graphics.BitmapFactory; importandroid.graphics.Canvas; importandroid.graphics.ColorMatrix; importandroid.graphics.ColorMatrixColorFilter; importandroid.graphics.LinearGradient; importandroid.graphics.Matrix; importandroid.graphics.Paint; importandroid.graphics.PorterDuff; importandroid.graphics.PorterDuff.Mode; importandroid.graphics.PorterDuffXfermode; importandroid.graphics.Rect; importandroid.graphics.RectF; importandroid.graphics.Shader; importandroid.graphics.drawable.BitmapDrawable; importandroid.graphics.drawable.Drawable; /** *图片工具类 *@authorwwj *2013/7/3 */ publicclassImageUtil{ /**图片的八个位置**/ publicstaticfinalintTOP=0;//上 publicstaticfinalintBOTTOM=1;//下 publicstaticfinalintLEFT=2;//左 publicstaticfinalintRIGHT=3;//右 publicstaticfinalintLEFT_TOP=4;//左上 publicstaticfinalintLEFT_BOTTOM=5;//左下 publicstaticfinalintRIGHT_TOP=6;//右上 publicstaticfinalintRIGHT_BOTTOM=7;//右下 /** *图像的放大缩小方法 *@paramsrc源位图对象 *@paramscaleX宽度比例系数 *@paramscaleY高度比例系数 *@return返回位图对象 */ publicstaticBitmapzoomBitmap(Bitmapsrc,floatscaleX,floatscaleY){ Matrixmatrix=newMatrix(); matrix.setScale(scaleX,scaleY); Bitmapt_bitmap=Bitmap.createBitmap(src,0,0,src.getWidth(),src.getHeight(),matrix,true); returnt_bitmap; } /** *图像放大缩小--根据宽度和高度 *@paramsrc *@paramwidth *@paramheight *@return */ publicstaticBitmapzoomBimtap(Bitmapsrc,intwidth,intheight){ returnBitmap.createScaledBitmap(src,width,height,true); } /** *将Drawable转为Bitmap对象 *@paramdrawable *@return */ publicstaticBitmapdrawableToBitmap(Drawabledrawable){ return((BitmapDrawable)drawable).getBitmap(); } /** *将Bitmap转换为Drawable对象 *@parambitmap *@return */ publicstaticDrawablebitmapToDrawable(Bitmapbitmap){ Drawabledrawable=newBitmapDrawable(bitmap); returndrawable; } /** *Bitmap转byte[] *@parambitmap *@return */ publicstaticbyte[]bitmapToByte(Bitmapbitmap){ ByteArrayOutputStreamout=newByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100,out); returnout.toByteArray(); } /** *byte[]转Bitmap *@paramdata *@return */ publicstaticBitmapbyteToBitmap(byte[]data){ if(data.length!=0){ returnBitmapFactory.decodeByteArray(data,0,data.length); } returnnull; } /** *绘制带圆角的图像 *@paramsrc *@paramradius *@return */ publicstaticBitmapcreateRoundedCornerBitmap(Bitmapsrc,intradius){ finalintw=src.getWidth(); finalinth=src.getHeight(); //高清量32位图 Bitmapbitmap=Bitmap.createBitmap(w,h,Config.ARGB_8888); Paintpaint=newPaint(); Canvascanvas=newCanvas(bitmap); canvas.drawARGB(0,0,0,0); paint.setColor(0xff424242); //防止边缘的锯齿 paint.setFilterBitmap(true); Rectrect=newRect(0,0,w,h); RectFrectf=newRectF(rect); //绘制带圆角的矩形 canvas.drawRoundRect(rectf,radius,radius,paint); //取两层绘制交集,显示上层 paint.setXfermode(newPorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //绘制图像 canvas.drawBitmap(src,rect,rect,paint); returnbitmap; } /** *创建选中带提示图片 *@paramcontext *@paramsrcId *@paramtipId *@return */ publicstaticDrawablecreateSelectedTip(Contextcontext,intsrcId,inttipId){ Bitmapsrc=BitmapFactory.decodeResource(context.getResources(),srcId); Bitmaptip=BitmapFactory.decodeResource(context.getResources(),tipId); finalintw=src.getWidth(); finalinth=src.getHeight(); Bitmapbitmap=Bitmap.createBitmap(w,h,Config.ARGB_8888); Paintpaint=newPaint(); Canvascanvas=newCanvas(bitmap); //绘制原图 canvas.drawBitmap(src,0,0,paint); //绘制提示图片 canvas.drawBitmap(tip,(w-tip.getWidth()),0,paint); returnbitmapToDrawable(bitmap); } /** *带倒影的图像 *@paramsrc *@return */ publicstaticBitmapcreateReflectionBitmap(Bitmapsrc){ //两个图像间的空隙 finalintspacing=4; finalintw=src.getWidth(); finalinth=src.getHeight(); //绘制高质量32位图 Bitmapbitmap=Bitmap.createBitmap(w,h+h/2+spacing,Config.ARGB_8888); //创建燕X轴的倒影图像 Matrixm=newMatrix(); m.setScale(1,-1); Bitmapt_bitmap=Bitmap.createBitmap(src,0,h/2,w,h/2,m,true); Canvascanvas=newCanvas(bitmap); Paintpaint=newPaint(); //绘制原图像 canvas.drawBitmap(src,0,0,paint); //绘制倒影图像 canvas.drawBitmap(t_bitmap,0,h+spacing,paint); //线性渲染-沿Y轴高到低渲染 Shadershader=newLinearGradient(0,h+spacing,0,h+spacing+h/2,0x70ffffff,0x00ffffff,Shader.TileMode.MIRROR); paint.setShader(shader); //取两层绘制交集,显示下层。 paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN)); //绘制渲染倒影的矩形 canvas.drawRect(0,h+spacing,w,h+h/2+spacing,paint); returnbitmap; } /** *独立的倒影图像 *@paramsrc *@return */ publicstaticBitmapcreateReflectionBitmapForSingle(Bitmapsrc){ finalintw=src.getWidth(); finalinth=src.getHeight(); //绘制高质量32位图 Bitmapbitmap=Bitmap.createBitmap(w,h/2,Config.ARGB_8888); //创建沿X轴的倒影图像 Matrixm=newMatrix(); m.setScale(1,-1); Bitmapt_bitmap=Bitmap.createBitmap(src,0,h/2,w,h/2,m,true); Canvascanvas=newCanvas(bitmap); Paintpaint=newPaint(); //绘制倒影图像 canvas.drawBitmap(t_bitmap,0,0,paint); //线性渲染-沿Y轴高到低渲染 Shadershader=newLinearGradient(0,0,0,h/2,0x70ffffff, 0x00ffffff,Shader.TileMode.MIRROR); paint.setShader(shader); //取两层绘制交集。显示下层。 paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN)); //绘制渲染倒影的矩形 canvas.drawRect(0,0,w,h/2,paint); returnbitmap; } publicstaticBitmapcreateGreyBitmap(Bitmapsrc){ finalintw=src.getWidth(); finalinth=src.getHeight(); Bitmapbitmap=Bitmap.createBitmap(w,h,Config.ARGB_8888); Canvascanvas=newCanvas(bitmap); Paintpaint=newPaint(); //颜色变换的矩阵 ColorMatrixmatrix=newColorMatrix(); //saturation饱和度值,最小可设为0,此时对应的是灰度图;为1表示饱和度不变,设置大于1,就显示过饱和 matrix.setSaturation(0); ColorMatrixColorFilterfilter=newColorMatrixColorFilter(matrix); paint.setColorFilter(filter); canvas.drawBitmap(src,0,0,paint); returnbitmap; } /** *保存图片 *@paramsrc *@paramfilepath *@paramformat:[Bitmap.CompressFormat.PNG,Bitmap.CompressFormat.JPEG] *@return */ publicstaticbooleansaveImage(Bitmapsrc,Stringfilepath,CompressFormatformat){ booleanrs=false; Filefile=newFile(filepath); try{ FileOutputStreamout=newFileOutputStream(file); if(src.compress(format,100,out)){ out.flush();//写入流 } out.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } returnrs; } /** *添加水印效果 *@paramsrc源位图 *@paramwatermark水印 *@paramdirection方向 *@paramspacing间距 *@return */ publicstaticBitmapcreateWatermark(Bitmapsrc,Bitmapwatermark,intdirection,intspacing){ finalintw=src.getWidth(); finalinth=src.getHeight(); Bitmapbitmap=Bitmap.createBitmap(w,h,Config.ARGB_8888); Canvascanvas=newCanvas(bitmap); canvas.drawBitmap(src,0,0,null); if(direction==LEFT_TOP){ canvas.drawBitmap(watermark,spacing,spacing,null); }elseif(direction==LEFT_BOTTOM){ canvas.drawBitmap(watermark,spacing,h-watermark.getHeight()-spacing,null); }elseif(direction==RIGHT_TOP){ canvas.drawBitmap(watermark,w-watermark.getWidth()-spacing,spacing,null); }elseif(direction==RIGHT_BOTTOM){ canvas.drawBitmap(watermark,w-watermark.getWidth()-spacing,h-watermark.getHeight()-spacing,null); } returnbitmap; } /** *合成图像 *@paramdirection *@parambitmaps *@return */ publicstaticBitmapcomposeBitmap(intdirection,Bitmap...bitmaps){ if(bitmaps.length<2){ returnnull; } BitmapfirstBitmap=bitmaps[0]; for(inti=0;ifw?sw:fw,fh+sh,Config.ARGB_8888); canvas=newCanvas(bitmap); canvas.drawBitmap(secondBitmap,0,0,null); canvas.drawBitmap(firstBitmap,0,sh,null); }elseif(direction==BOTTOM){ bitmap=Bitmap.createBitmap(fw>sw?fw:sw,fh+sh,Config.ARGB_8888); canvas=newCanvas(bitmap); canvas.drawBitmap(firstBitmap,0,0,null); canvas.drawBitmap(secondBitmap,0,fh,null); }elseif(direction==LEFT){ bitmap=Bitmap.createBitmap(fw+sw,sh>fh?sh:fh,Config.ARGB_8888); canvas=newCanvas(bitmap); canvas.drawBitmap(secondBitmap,0,0,null); canvas.drawBitmap(firstBitmap,sw,0,null); }elseif(direction==RIGHT){ bitmap=Bitmap.createBitmap(fw+sw,fh>sh?fh:sh, Config.ARGB_8888); canvas=newCanvas(bitmap); canvas.drawBitmap(firstBitmap,0,0,null); canvas.drawBitmap(secondBitmap,fw,0,null); } returnbitmap; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。