您的位置:首页 > 移动开发 > Android开发

android Bitmap图片的相关处理操作

2015-03-18 15:21 465 查看

androidBitmap图片的相关处理操作

/**
*从网络获取图片并返回Bitmap对象
*@paramurlpath网络URL
*@return
*/
publicstaticBitmapgetImageFromUrl(Stringurlpath){
InputStreaminputStream=null;
Bitmapbitmap=null;
try{
URLurl=newURL(urlpath);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");//设置请求方法为GET
conn.setReadTimeout(5*1000);//设置请求过时时间为5秒
inputStream=conn.getInputStream();//通过输入流获得图片数据
byte[]buffer=newbyte[1024];
intlen=0;
ByteArrayOutputStreambos=newByteArrayOutputStream();
while((len=inputStream.read(buffer))!=-1){
bos.write(buffer,0,len);
}
bos.close();
byte[]data=bos.toByteArray();//获得图片的二进制数据
bitmap=BitmapFactory.decodeByteArray(data,0,data.length);//生成位图
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(inputStream!=null){
try{
inputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnbitmap;
}

/**
*按正方形裁切图片
*/
publicstaticBitmapImageCrop(Bitmapbitmap){
intw=bitmap.getWidth();//得到图片的宽,高
inth=bitmap.getHeight();

intwh=w>h?h:w;//裁切后所取的正方形区域边长

intretX=w>h?(w-h)/2:0;//基于原图,取正方形左上角x坐标
intretY=w>h?0:(h-w)/2;

//下面这句是关键
returnBitmap.createBitmap(bitmap,retX,retY,wh,wh,null,false);
}

//使用Bitmap加Matrix来缩放
publicstaticBitmapresizeImage(Bitmapbitmap,intw,inth)
{
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
intnewWidth=w;
intnewHeight=h;

floatscaleWidth=((float)newWidth)/width;
floatscaleHeight=((float)newHeight)/height;

Matrixmatrix=newMatrix();
matrix.postScale(scaleWidth,scaleHeight);
BitmapresizedBitmap=Bitmap.createBitmap(bitmap,0,0,width,
height,matrix,true);
if(!bitmap.isRecycled()){
bitmap.recycle();
bitmap=null;
}
returnresizedBitmap;
}

//使用Bitmap加Matrix来缩放[path图片路径]
publicstaticBitmapresizeImage(Stringpath,intw,inth)
{
//Bitmapbitmap=resizeImage(path);
//Bitmapbitmap=BitmapFactory.decodeFile(path);
Bitmapbitmap=decodeFile(path,w,h);
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
intnewWidth=w;
intnewHeight=h;
floatinitScale=(float)0.99;
floatscaleWidth=((float)newWidth)/width;
floatscaleHeight=((float)newHeight)/height;

if(scaleWidth<1.0||scaleHeight<1.0){
initScale=scaleHeight>scaleWidth?scaleWidth:scaleHeight;
}
else{
returnbitmap;
}
Matrixmatrix=newMatrix();
matrix.postScale(initScale,initScale);

BitmapresizedBitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);
if(!bitmap.isRecycled()){
bitmap.recycle();
bitmap=null;
}
returnresizedBitmap;
}
  


/*
*图片圆角的设置
*bitmap传入的bitmap对象
*pixels自定义圆角角度
*/
publicstaticBitmaptoRoundCorner(Bitmapbitmap,intpixels){
BitmapoutputBitmap=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),Config.ARGB_8888);
Canvascanvas=newCanvas(outputBitmap);
finalintcolor=0xff424242;
finalPaintpaint=newPaint();
finalRectrect=newRect(0,0,bitmap.getWidth(),bitmap.getHeight());
finalRectFrectF=newRectF(rect);
finalfloatroundPx=pixels;

paint.setAntiAlias(true);
canvas.drawARGB(0,0,0,0);
paint.setColor(color);
canvas.drawRoundRect(rectF,roundPx,roundPx,paint);
paint.setXfermode(newPorterDuffXfermode(PorterDuff.Mode.SRC_IN));

canvas.drawBitmap(bitmap,rect,rect,paint);
returnoutputBitmap;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: