Android --- 图片的特效处理

Android --- 图片处理的方法

转换 - drawable To bitmap

缩放 - Zoom

圆角 - Round Corner

倒影 - Reflected

bitmapPrcess code:

package com.learn.games;

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

public class bitmapProcess {

    // zoom
    public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        Matrix matrix = new Matrix();
        
        float scaleWidth = w/(float)width;
        float scaleHeight = h/(float)height;
        matrix.postScale(scaleWidth, scaleHeight);
        
        Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
        return bitmap2;     
    }
    
    
    // drawable to bitmap
    public static Bitmap drawable2Bitmap(Drawable drawable){
        int width = drawable.getIntrinsicHeight();
        int height = drawable.getIntrinsicHeight();
        
        Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() 
                != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
        
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, width, height);
        drawable.draw(canvas);
        
        return bitmap;
    }
    
    
    // Round Corner Bitmap
    public static Bitmap getRoundCornerBitmap(Bitmap bitmap, float roundPX){
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        
        Bitmap bitmap2 = Bitmap.createBitmap(width, height, Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap2);
        
        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, width, height);
        final RectF rectF = new RectF(rect);

        paint.setColor(color);
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        canvas.drawRoundRect(rectF, roundPX, roundPX, paint);
        
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawRect(0, height, width, reflectedBitmap.getHeight() + reflectedGap, paint);
        
        return reflectedBitmap;
    }
    
}

Java Code:

package com.learn.games;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

public class MyBitmapProcessActivity extends Activity {
    private ImageView imgView1;
    private ImageView imgView2;
    private ImageView imgView3;
    private ImageView imgView4;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        drawBitmap();
    }
    
    
    private void drawBitmap(){
        imgView1 = (ImageView)findViewById(R.id.imgView1);
        imgView2 = (ImageView)findViewById(R.id.imgView2);
        imgView3 = (ImageView)findViewById(R.id.imgView3);
        imgView4 = (ImageView)findViewById(R.id.imgView4);
        
        Drawable drawable = this.getWallpaper();
        
        Bitmap bitmap = bitmapProcess.drawable2Bitmap(drawable);                        // drawable to bitmap
        Bitmap zoomBitmap = bitmapProcess.zoomBitmap(bitmap, 100, 100);                 // zoom 
        Bitmap roundBitmap = bitmapProcess.getRoundCornerBitmap(zoomBitmap, 10.0f);     // round corner 
        Bitmap reflectedBitmap = bitmapProcess.createReflectedBitmap(zoomBitmap);       // reflect bitmap
        
        // drawable to bitmap
        imgView1.setImageBitmap(bitmap);
        imgView2.setImageBitmap(zoomBitmap);
        imgView3.setImageBitmap(roundBitmap);
        imgView4.setImageBitmap(reflectedBitmap);
        
        // bitmap to drawable
        Drawable roundDrawable = new BitmapDrawable(roundBitmap);
        Drawable reflectedDrawable = new BitmapDrawable(reflectedBitmap);
        imgView1.setBackgroundDrawable(roundDrawable);
        imgView2.setBackgroundDrawable(reflectedDrawable);
    }
}

XML:



 
     
        
        
    
    
    
        
        
    
        

效果图:

drawable2bitmap

Android --- 图片的特效处理_第1张图片
image

zoom

Android --- 图片的特效处理_第2张图片
image

round corner

Android --- 图片的特效处理_第3张图片
image

reflected bitmap

Android --- 图片的特效处理_第4张图片
image

加群:Android进阶群 4112676 可免费获取Android进阶资料

你可能感兴趣的:(Android --- 图片的特效处理)