zoukankan      html  css  js  c++  java
  • 利用android Matrix来处理简单图片

    精彩源码:

    AChartEngine的简单使用:柱状图、饼状图、折线图
    http://www.eoeandroid.com/thread-188241-1-1.html

    第三方集成之新浪微薄
    http://www.eoeandroid.com/thread-168264-1-1.html

    第三方集成之人人客户端
    http://www.eoeandroid.com/thread-168100-1-1.html

    Matrix是由一个3×3的矩阵组成的,因为涉及到数学中的矩阵概念先不做解释。Matrix已经给我们封装好了一些方法,这里先看看每个方法的效果。
      程序目录如下:

    main.xml展示变换前后的图片:

    <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
     
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
     
        >
     <imageview
     
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/picture1"
        />
     
      <textview
        android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下图是改变后的效果" /> <imageview android:id="@+id/myimage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/picture1" />

    MainActivity负责利用Matrix处理图片,首先演示图片旋转效果,主要代码:

    public void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);
     
        ImageView imageView;
     
        Matrix mMatrix = new Matrix(); 
        imageView = (ImageView) findViewById(R.id.myimage);
     
        Bitmap bmp = ((BitmapDrawable) getResources().getDrawable(
     
                R.drawable.picture1)).getBitmap();
            mMatrix.setRotate(60);
     
        Bitmap bm = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),bmp.getHeight(), mMatrix, true);
     
        imageView.setImageBitmap(bm);
     
    }

    注意:Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在
      Android的API里都提供了set, post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点。
      set是直接设置Matrix的值,每次set一次,整个Matrix的数组都会变掉。
      post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post,来完成所需的整个变换。
      例如,要将一个图片旋转30度,然后平移到(100,100)的地方,那么可以这样做:

    Matrix m = new Matrix(); 
     
    m.postRotate(30); 
     
    m.postTranslate(100, 100);

    将图片旋转60度:

    图片倾斜:mMatrix.postSkew(0.3f, 0.7f);效果:

    图片缩放,x轴缩小0.5倍,y轴扩大2.5倍:mMatrix.setScale(0.5f, 2.5f);效果:

  • 相关阅读:
    pip安装flask问题解决
    GRE新东方推荐学习方法(2010年左右)
    使用eclipse IDE遇到的问题
    2014年互联网大会(商业价值,北京,7月)
    Indexing the World Wide Web: the Journey So Far阅读笔记
    Big Data Opportunities and Challenges(by周志华)论文要点
    spark常用算子总结
    使用Faster R-CNN做目标检测
    Oracle 性能调优 SQL_TRACE
    Oracle 性能调优 10053事件
  • 原文地址:https://www.cnblogs.com/vus520/p/2616573.html
Copyright © 2011-2022 走看看