Android 几种图像特效处理的集锦

第一步:新建一个Android工程命名为ImageDemo,工程结构如下:
204701_aa4q_195301.jpg 

第二步.java文件ImageUtil.java,在里面定义一些图片处理方法<span color:#333333;"="" style="font-size: 10.5pt; ">,代码如下:

001 package com.android.tutor; 
002 import android.graphics.Bitmap; 
003 import android.graphics.Canvas; 
004 import android.graphics.LinearGradient; 
005 import android.graphics.Matrix; 
006 import android.graphics.Paint; 
007 import android.graphics.PixelFormat; 
008 import android.graphics.PorterDuffXfermode; 
009 import android.graphics.Rect; 
010 import android.graphics.RectF; 
011 import android.graphics.Bitmap.Config; 
012 import android.graphics.PorterDuff.Mode; 
013 import android.graphics.Shader.TileMode; 
014 import android.graphics.drawable.Drawable; 
015 public class ImageUtil { 
016        
017     //放大缩小图片  
018     public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){ 
019         int width = bitmap.getWidth(); 
020         int height = bitmap.getHeight(); 
021         Matrix matrix = new Matrix(); 
022         float scaleWidht = ((float)w / width); 
023         float scaleHeight = ((float)h / height); 
024         matrix.postScale(scaleWidht, scaleHeight); 
025         Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); 
026         return newbmp; 
027     
028     //将Drawable转化为Bitmap  
029      public static Bitmap drawableToBitmap(Drawable drawable){ 
030             int width = drawable.getIntrinsicWidth(); 
031             int height = drawable.getIntrinsicHeight(); 
032             Bitmap bitmap = Bitmap.createBitmap(width, height, 
033                     drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 
034                             : Bitmap.Config.RGB_565); 
035             Canvas canvas = new Canvas(bitmap); 
036             drawable.setBounds(0,0,width,height); 
037             drawable.draw(canvas); 
038             return bitmap; 
039                
040         
041         
042      //获得圆角图片的方法  
043     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){ 
044            
045         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap 
046                 .getHeight(), Config.ARGB_8888); 
047         Canvas canvas = new Canvas(output); 
048     
049         final int color = 0xff424242
050         final Paint paint = new Paint(); 
051         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
052         final RectF rectF = new RectF(rect); 
053     
054         paint.setAntiAlias(true); 
055         canvas.drawARGB(0, 0, 0, 0); 
056         paint.setColor(color); 
057         canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 
058     
059         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
060         canvas.drawBitmap(bitmap, rect, rect, paint); 
061     
062         return output; 
063     
064     //获得带倒影的图片方法  
065     public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){ 
066         final int reflectionGap = 4
067         int width = bitmap.getWidth(); 
068         int height = bitmap.getHeight(); 
069            
070         Matrix matrix = new Matrix(); 
071         matrix.preScale(1, -1); 
072            
073         Bitmap reflectionImage = Bitmap.createBitmap(bitmap,  
074                 0, height/2, width, height/2, matrix, false); 
075            
076         Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888); 
077            
078         Canvas canvas = new Canvas(bitmapWithReflection); 
079         canvas.drawBitmap(bitmap, 0, 0, null); 
080         Paint deafalutPaint = new Paint(); 
081         canvas.drawRect(0, height,width,height + reflectionGap, 
082                 deafalutPaint); 
083            
084         canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null); 
085            
086         Paint paint = new Paint(); 
087         LinearGradient shader = new LinearGradient(0
088                 bitmap.getHeight(), 0, bitmapWithReflection.getHeight() 
089                 + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP); 
090         paint.setShader(shader); 
091         // Set the Transfer mode to be porter duff and destination in  
092         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 
093         // Draw a rectangle using the paint with our linear gradient  
094         canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() 
095                 + reflectionGap, paint); 
096     
097         return bitmapWithReflection; 
098     
099        
100 }
第三步:修改main.xml布局文件,主要放了两个ImageView控件,代码如下:
1 <!--?xml version="1.0" encoding="utf-8"?-->   
2       
第四步:修改主核心程序,ImageDemo.java,代码如下:
01 package com.android.tutor; 
02 import android.app.Activity; 
03 import android.graphics.Bitmap; 
04 import android.graphics.drawable.Drawable; 
05 import android.os.Bundle; 
06 import android.widget.ImageView; 
07 public class Imagedemo extends Activity { 
08     private ImageView mImageView01,mImageView02; 
09        
10     public void onCreate(Bundle savedInstanceState) { 
11         super.onCreate(savedInstanceState); 
12         setContentView(R.layout.main); 
13         setupViews(); 
14     
15       
16     private void setupViews(){ 
17         mImageView01 = (ImageView)findViewById(R.id.image01); 
18         mImageView02 = (ImageView)findViewById(R.id.image02); 
19            
20         //获取壁纸返回值是Drawable  
21         Drawable drawable = getWallpaper(); 
22         //将Drawable转化为Bitmap  
23         Bitmap bitmap = ImageUtil.drawableToBitmap(drawable); 
24         //缩放图片  
25         Bitmap zoomBitmap = ImageUtil.zoomBitmap(bitmap, 100, 100); 
26         //获取圆角图片  
27         Bitmap roundBitmap = ImageUtil.getRoundedCornerBitmap(zoomBitmap, 10.0f); 
28         //获取倒影图片  
29         Bitmap reflectBitmap = ImageUtil.createReflectionImageWithOrigin(zoomBitmap); 
30         //这里可以让Bitmap再转化为Drawable  
31 //      Drawable roundDrawable = new BitmapDrawable(roundBitmap);         
32 //      Drawable reflectDrawable = new BitmapDrawable(reflectBitmap);         
33 //      mImageView01.setBackgroundDrawable(roundDrawable);  
34 //      mImageView02.setBackgroundDrawable(reflectDrawable);  
35                    
36         mImageView01.setImageBitmap(roundBitmap); 
37         mImageView02.setImageBitmap(reflectBitmap); 
38     
39          
40           
41 }

第五步:运行上述工程,查看效果如下:

Android 几种图像特效处理的集锦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值