Android 图片的平移、缩放、倒影、旋转实现
发布日期:2021-06-30 22:36:56 浏览次数:2 分类:技术文章

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

解析:

1)根据原来的图片创建新的图片
Bitmap modBm = Bitmap.createBitmap(bm.getWidth()+20, bm.getHeight()+20, bm.getConfig());
2)设置到画布
Canvas canvas = new Canvas(modBm);
3)使用矩阵进行平移…
Matrix matrix = new Matrix();
matrix.setRotate(90, bm.getWidth()/2, bm.getHeight()/2);
4)把改变后图片设置到
canvas.drawBitmap(bm, matrix, paint);
imageView2.setImageBitmap(modBm);

示例代码:

1、平移:

public class TranslateImageActivity extends Activity {
private ImageView imageView1; private ImageView imageView2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_rotate); initViews(); } private void initViews() { imageView1 = (ImageView) findViewById(R.id.imageView1); imageView2 = (ImageView) findViewById(R.id.imageView2); Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mm0); imageView1.setImageBitmap(bm); Bitmap modBm = Bitmap.createBitmap(bm.getWidth()+20, bm.getHeight()+20, bm.getConfig()); Canvas canvas = new Canvas(modBm); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setAntiAlias(true); Matrix matrix = new Matrix(); //matrix.setRotate(90, bm.getWidth()/2, bm.getHeight()/2); matrix.setTranslate(20, 20); matrix.postTranslate(20, 20); canvas.drawBitmap(bm, matrix, paint); imageView2.setImageBitmap(modBm); }}

2、缩放

public class ScaleImageActivity extends BaseActivity {
private static final int DOUBLE = 2; private ImageView iv1, iv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scale_iamge); iv1 = (ImageView) findViewById(R.id.imageView1); iv2 = (ImageView) findViewById(R.id.imageView2); Bitmap b1 = BitmapFactory.decodeResource(getResources(), R.drawable.p1); iv1.setImageBitmap(b1); Bitmap b2 = Bitmap.createBitmap(b1.getWidth()*DOUBLE, b1.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(b2); Matrix matrix = new Matrix(); matrix.setValues(new float[]{ DOUBLE * 1.0f, 0, 0,//x 0, 1.0f, 0,//y 0, 0, 1.0f//z }); canvas.drawBitmap(b1, matrix, new Paint()); iv2.setImageBitmap(b2); }}

3、倒影

public class ShadeImageActivity extends Activity {
private ImageView imageView1; private ImageView imageView2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_rotate); initViews(); } private void initViews() { imageView1 = (ImageView) findViewById(R.id.imageView1); imageView2 = (ImageView) findViewById(R.id.imageView2); Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mm3); imageView1.setImageBitmap(bm); Bitmap modBm = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig()); Canvas canvas = new Canvas(modBm); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setAntiAlias(true); Matrix matrix = new Matrix(); //matrix.setRotate(90, bm.getWidth()/2, bm.getHeight()/2); //matrix.setTranslate(20, 20); //镜子效果 matrix.setScale(1, -1); matrix.postTranslate(0, bm.getHeight()); canvas.drawBitmap(bm, matrix, paint); imageView2.setImageBitmap(modBm); }}

4、旋转

public class RotateImageActivity extends Activity {
private ImageView imageView1; private ImageView imageView2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_rotate); initViews(); } private void initViews() { imageView1 = (ImageView) findViewById(R.id.imageView1); imageView2 = (ImageView) findViewById(R.id.imageView2); Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.mm0); imageView1.setImageBitmap(bm); Bitmap modBm = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig()); Canvas canvas = new Canvas(modBm); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setAntiAlias(true); Matrix matrix = new Matrix(); matrix.setRotate(90, bm.getWidth()/2, bm.getHeight()/2); canvas.drawBitmap(bm, matrix, paint); imageView2.setImageBitmap(modBm); }}

———————————————————————

有需求者请加qq:136137465,非诚勿扰
(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
——————————————————————–

转载地址:https://lovoo.blog.csdn.net/article/details/51439733 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android 开发中获取View视图的宽和高的几种方法
下一篇:OC 对象和方法的关系

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月13日 10时41分00秒