`
mmdev
  • 浏览: 12934930 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

android图片处理技巧

 
阅读更多
packagecom.img.util;

importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.Canvas;
importandroid.graphics.LinearGradient;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.PixelFormat;
importandroid.graphics.PorterDuff.Mode;
importandroid.graphics.PorterDuffXfermode;
importandroid.graphics.Rect;
importandroid.graphics.RectF;
importandroid.graphics.Shader.TileMode;
importandroid.graphics.drawable.Drawable;

publicclassImgUtil{
//放大缩小图片
publicstaticBitmapzoomBitmap(Bitmapbitmap,intw,inth){
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();
Matrixmatrix
=newMatrix();
floatscaleWidth=((float)w/width);
floatscaleHeight=((float)h/height);
matrix.postScale(scaleWidth,scaleHeight);
BitmapnewBmp
=Bitmap.createBitmap(bitmap,0,0,width,height,
matrix,
true);
returnnewBmp;
}

//将Drawable转化为Bitmap
publicstaticBitmapdrawableToBitmap(Drawabledrawable){
intwidth=drawable.getIntrinsicWidth();
intheight=drawable.getIntrinsicHeight();
Bitmapbitmap
=Bitmap.createBitmap(width,height,drawable
.getOpacity()
!=PixelFormat.OPAQUE?Bitmap.Config.ARGB_8888
:Bitmap.Config.RGB_565);
Canvascanvas
=newCanvas(bitmap);
drawable.setBounds(
0,0,width,height);
drawable.draw(canvas);
returnbitmap;
}

//圆角图片
publicstaticBitmapgetRoundedCornerBitmap(Bitmapbitmap,floatroundPx){
Bitmapoutput
=Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(),Config.ARGB_8888);
Canvascanvas
=newCanvas(output);

finalintcolor=0xff424242;
finalPaintpaint=newPaint();
finalRectrect=newRect(0,0,bitmap.getWidth(),bitmap.getHeight());
finalRectFrectF=newRectF(rect);

paint.setAntiAlias(
true);
canvas.drawARGB(
0,0,0,0);
paint.setColor(color);
canvas.drawRoundRect(rectF,roundPx,roundPx,paint);

paint.setXfermode(
newPorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap,rect,rect,paint);
returnoutput;
}

//获得带倒影的图片方法
publicstaticBitmapcreateReflectionImageWithOrigin(Bitmapbitmap){
finalintreflectionGap=4;
intwidth=bitmap.getWidth();
intheight=bitmap.getHeight();

Matrixmatrix
=newMatrix();
matrix.preScale(
1,-1);

BitmapreflectionImage
=Bitmap.createBitmap(bitmap,0,height/2,
width,height
/2,matrix,false);

BitmapbitmapWithReflection
=Bitmap.createBitmap(width,
(height
+height/2),Config.ARGB_8888);

Canvascanvas
=newCanvas(bitmapWithReflection);
canvas.drawBitmap(bitmap,
0,0,null);
PaintdeafalutPaint
=newPaint();
canvas.drawRect(
0,height,width,height+reflectionGap,deafalutPaint);

canvas.drawBitmap(reflectionImage,
0,height+reflectionGap,null);

Paintpaint
=newPaint();
LinearGradientshader
=newLinearGradient(0,bitmap.getHeight(),0,
bitmapWithReflection.getHeight()
+reflectionGap,0x70ffffff,
0x00ffffff,TileMode.CLAMP);
paint.setShader(shader);
//SettheTransfermodetobeporterduffanddestinationin
paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN));
//Drawarectangleusingthepaintwithourlineargradient
canvas.drawRect(0,height,width,bitmapWithReflection.getHeight()
+reflectionGap,paint);

returnbitmapWithReflection;
}
}

packagecom.img.util;

importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.drawable.Drawable;
importandroid.os.Bundle;
importandroid.widget.ImageView;

publicclassMainActivityextendsActivity{
privateImageViewmImageView01,mImageView02;

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}

privatevoidsetupViews(){
mImageView01
=(ImageView)findViewById(R.id.image01);
mImageView02
=(ImageView)findViewById(R.id.image02);

//获取壁纸返回值是Drawable
Drawabledrawable=getWallpaper();
//将Drawable转化为Bitmap
Bitmapbitmap=ImgUtil.drawableToBitmap(drawable);
//缩放图片
BitmapzoomBitmap=ImgUtil.zoomBitmap(bitmap,100,100);
//获取圆角图片
BitmaproundBitmap=ImgUtil
.getRoundedCornerBitmap(zoomBitmap,
10.0f);
//获取倒影图片
BitmapreflectBitmap=ImgUtil
.createReflectionImageWithOrigin(zoomBitmap);
//这里可以让Bitmap再转化为Drawable
//DrawableroundDrawable=newBitmapDrawable(roundBitmap);
//DrawablereflectDrawable=newBitmapDrawable(reflectBitmap);
//mImageView01.setBackgroundDrawable(roundDrawable);
//mImageView02.setBackgroundDrawable(reflectDrawable);

mImageView01.setImageBitmap(roundBitmap);
mImageView02.setImageBitmap(reflectBitmap);
}
}
分享到:
评论

相关推荐

    Android绘图机制与处理技巧(三)——Android图像处理之图形特效处理

    Android绘图机制与处理技巧(三)——Android图像处理之图形特效处理

    android图片处理方法

    android图片处理方法,有图片处理用到得技巧

    Android绘图机制与处理技巧(二)——Android图像处理之色彩特效处理

    Android对于图片处理,最常使用到的数据结构是位图——Bitmap,它包含了一张图片所有的数据。整个图片都是由点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。而颜色值——...

    android图片特效处理

    Android中有很多图片特效处理技巧,比如圆角、倒影,今天为大家分享一个实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理。

    Android绘图机制与处理技巧(四)——Android图像处理之画笔特效处理

    除了常用的画笔属性,比如普通的画笔(Paint),带边框、填充的style,颜色(Color),宽度(StrokeWidth),抗锯齿(ANTI_ALIAS_FLAG)等,Android还提供了各种各样专业的画笔工具,如记号笔、毛笔、蜡笔等,使用它们可以...

    Android中几种图像特效处理方法

    Android中几种图像特效处理方法,是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.

    Android图片处理实例分析

    主要介绍了Android图片处理的方法,结合实例形式分析了Android针对图片的加载、分割、缩放、绘制等操作技巧,需要的朋友可以参考下

    Android实现imageView显示圆角图片、描边图片效果.rar

    用在你的android APP中,可美化图片,让图片的显示更漂亮。这个例子主要是让大家熟悉imageView控件的用法技巧,除了可以实现圆形图片、圆角图片、为图片增加各种颜色大小的边框外,还有很多功能,敬请下载源码。

    关于android Matrix的使用

    关于android上matrix的使用,可以开发者更好地掌握android上的图片处理技巧

    android开发资料大全

    Android中利用画图类和线程画出闪烁的心形,送给亲爱的他 android自带的示例程序 BluetoothChat 变蓝牙串口助手(内含DIY蓝牙遥控车附源码实例教程) Android高手过招 FAQ 网友收集的android开发书籍(可下载哦)...

    Android分享微信小程序技巧之图片优化

    小菜上周接入了微信分享小程序的入口,基本功能实现都没问题,有需要的朋友可以了解一下 Android 分享微信小程序失败二三事,虽然功能都正常,但整体测试发现图片展示效果不佳。于是小菜整理了一个简单的小方法处理...

    Android高手进阶教程(二十二)之Android中几种图像特效处理的集锦汇总!!

    大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等. 废话少说了,直接讲解今天的实例,本例主要是先获取壁纸...

    Android编程中图片特效处理方法小结

    主要介绍了Android编程中图片特效处理方法,实例总结了Android实现图片的转换、缩放、圆角及倒影等效果的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Android编程之图片颜色处理方法

    主要介绍了Android编程之图片颜色处理方法,涉及Android针对图片的颜色值、饱和度、透明度等处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Android常用技巧

    生命周期详解,布局详解,图片处理详解,内存优化详解。等等

    Android新浪微博客户端源代码

    Android手机上的新浪微博客户端程序Java源码下载,可了解到android中的域名获取等操作,http操作,发微博的作者操作,sqlite操作和微博浏览显示操作,包括了界面到数据库和网络较综合的操作技巧。包括使用sqlite创建...

    Android仿朋友圈图片查看器源码.rar

    每一张图片都可以显示图片描述,其实和微信朋友圈的图片显示方式并不一样哦,这个可以学习一下Android如何读取系统相册,如何改变图片浏览视图,学习一下Android环境下一些基础的图库操作技巧。

    Android编程实现图片的颜色处理功能示例

    主要介绍了Android编程实现图片的颜色处理功能,涉及Android拖动条的使用及图形颜色处理相关操作技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics