博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印
阅读量:6757 次
发布时间:2019-06-26

本文共 3202 字,大约阅读时间需要 10 分钟。

上一篇已经介绍了Android种Bitmap和Canvas的使用,以下我们来写一个详细实例吐舌头

执行效果:

主要代码

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;		}	}}
代码中都有详细实例,大家自己看哦,有什么不清楚的能解答都帮大家解答
你可能感兴趣的文章
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
Redis内存存储结构分析
查看>>
OCP终于考完了
查看>>
Cocos2D:滚动滚屏黑边问题
查看>>
Android 4.1最终版SDK和ADT Plugin全线发布
查看>>
jive论坛
查看>>
[Android问答] ListView如何加载远程图片?(附代码)
查看>>
android 调试源码
查看>>
k-means clustering - Wikipedia, the free encyclopedia
查看>>
三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
查看>>
ACL技术原理浅析及实例
查看>>
Winform开发框架之通用人员信息管理
查看>>
无序整数数组中找第k大的数
查看>>
柯乐义图片压缩类
查看>>
head first java 01 ( 1 ~ 3 章 )
查看>>
Superhero.js – 构建大型 JavaScript 应用程序的最佳资源
查看>>
什么是UAT测试?
查看>>
Installing — pylibmc 1.2.3 documentation
查看>>
FireDAC 下的 Sqlite [8] - 自定义函数
查看>>
Android 驱动测试程序H-M-S <2>
查看>>