趙雅智_運用Bitmap和Canvas實現圖片顯示,縮小,旋轉,水印
阿新 • • 發佈:2017-06-10
bitmap raw 圖形 res efault ast bmp 運用 放置
代碼中都有詳細實例,大家自己看哦,有什麽不清楚的能解答都幫大家解答
上一篇已經介紹了Android種Bitmap和Canvas的使用,以下我們來寫一個詳細實例
http://blog.csdn.net/zhaoyazhi2129/article/details/32136179
執行效果:
主要代碼
package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.os.Bundle; import android.util.Log; import android.view.View; public class CanvaDemoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CustomView(this)); } /** * 使用內部類 自己定義一個簡單的View * * @author zhaoyazhi * * 2014-6-18 */ class CustomView extends View { public CustomView(Context context) { super(context); } // 在這裏我們將測試canvas提供的繪制圖形方法 @Override protected void onDraw(Canvas canvas) { drawBitmap(canvas); drawBitmapPostScale(canvas); drapBitmapPostRotate(canvas); shuiyinBitmap(canvas); } /** * 在canvas放置圖片 * * @param canvas */ private void drawBitmap(Canvas canvas) { // 獲取圖片資源 Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.e); // 將圖片加入到canvas canvas.drawBitmap(bmp, 0, 0, null); } /** * 縮放圖片 * * @param canvas */ private void drawBitmapPostScale(Canvas canvas) { // 獲取圖片資源 Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.e); // Matrix類進行圖片處理(縮小或者旋轉) Matrix matrix = new Matrix(); // 縮小一倍 matrix.postScale(0.5f, 0.5f); // 生成新的圖片 Bitmap dstbmp = Bitmap.createBitmap(bmp1, 0, 0, bmp1.getWidth(), bmp1.getHeight(), matrix, true); // 加入到canvas canvas.drawBitmap(dstbmp, 200, 0, null); } /** * 旋轉圖片 * * @param canvas */ private void drapBitmapPostRotate(Canvas canvas) { // 獲取圖片資源 Bitmap bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.e); // Matrix類進行圖片處理(縮小或者旋轉) Matrix matrix1 = new Matrix(); // 縮小 matrix1.postScale(0.8f, 0.8f); // 旋轉 matrix1.postRotate(45); // 生成新的圖片 Bitmap dstbmp1 = Bitmap.createBitmap(bmp2, 0, 0, bmp2.getWidth(), bmp2.getHeight(), matrix1, true); // 加入到canvas canvas.drawBitmap(dstbmp1, 130, 100, null); } /** * 加水印圖片 * * @param canvas */ private void shuiyinBitmap(Canvas canvas) { Bitmap bmp = createBitmap( BitmapFactory.decodeResource(getResources(), R.drawable.e), BitmapFactory.decodeResource(getResources(), R.drawable.c)); canvas.drawBitmap(bmp, 10, 200, null); } // 圖片加入水印處理 private Bitmap createBitmap(Bitmap src, Bitmap watermark) { String tag = "createBitmap"; Log.d(tag, "create a new bitmap"); if (src == null) { return null; } int w = src.getWidth(); int h = src.getHeight(); int ww = watermark.getWidth(); int wh = watermark.getHeight(); // create the new blank bitmap Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 創建一個新的和SRC長度寬度一樣的位圖 Canvas cv = new Canvas(newb); // draw src into cv.drawBitmap(src, 0, 0, null);// 在 0,0坐標開始畫入src // draw watermark into cv.drawBitmap(watermark, w - ww + 5, h - wh + 5, null);// 在src的右下角畫入水印 // save all clip cv.save(Canvas.ALL_SAVE_FLAG);// 保存 // store cv.restore();// 存儲 return newb; } } }
代碼中都有詳細實例,大家自己看哦,有什麽不清楚的能解答都幫大家解答
趙雅智_運用Bitmap和Canvas實現圖片顯示,縮小,旋轉,水印