创建图片内存副本和旋转,缩放,平移,镜面,倒影

package com.qq.cpimage;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.Menu;
import android.widget.ImageView;

public class MainActivity extends Activity {
    private ImageView imageView1;
    private ImageView imageView2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView1 = (ImageView) findViewById(R.id.imageView1);
        imageView2 = (ImageView) findViewById(R.id.imageView2);
        // 加载原图
        Bitmap bitmap = BitmapFactory
                .decodeFile("/sdcard/DCIM/Camera/20150815_032812.jpg");
        imageView1.setImageBitmap(bitmap);
        // 复制文件
        // 按照原图的宽度,高度,配置创建一个空白的图片
        Bitmap alterbBitmap = Bitmap.createBitmap(bitmap.getWidth() / 2,
                bitmap.getHeight() / 2, bitmap.getConfig());
        // 赶紧临摹一个图片
        Canvas canvas = new Canvas(alterbBitmap);// 创建一个画板
        Paint paint = new Paint();// 创建一个画笔
        paint.setColor(Color.BLACK);// 画笔的初始颜色,如果原图没颜色用黑色
        // 第一个参数是临摹的图片
        // 1:1模型画图 缩放矩阵
        // 画笔
        // canvas.drawBitmap(bitmap, new Matrix(), paint);
        // imageView2.setImageBitmap(alterbBitmap);

        // 缩小
        Matrix matrix = new Matrix();
        matrix.setScale(0.5f, 0.5f);

        // 旋转
        matrix.setRotate(30);// 旋转30度,默认是左上角的点为旋转中心点
        matrix.setRotate(30, px, py);// 设定旋转角度,中心点

        // 平移
        matrix.setTranslate(100, 0);// 向右100,向下0。。。注意溢出画布,可设定画布大小

        
        //镜子效果
        matrix.setScale(-1.0f, 1);//关于x轴对称
        matrix.postTranslate(bitmap.getWidth(), 0);//移回原位
        
        //倒影效果
        matrix.setScale(1.0f, -1.0f);//关于x轴对称
        matrix.postTranslate(0, bitmap.getHeight());//移回原位
        

        canvas.drawBitmap(bitmap, matrix, paint);
        imageView2.setImageBitmap(alterbBitmap);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值