“千变万化”——神奇的Android图片规格调整器(坐标Matrix篇)

简介: 我们前面介绍了一些图片的信息获取方式,现在我们看看对图片是如何进行变化处理的,这其中有很多方法,我们先说明一下Matrix类的处理方式,也就是对图片坐标的变化以达到最终期望效果。

正篇

溯源

首先,我们找到该类的源代码:


网络异常,图片无法展示
|


通过这个简短的注释说明我们了解到,Matrix是一个3 x 3用于转换坐标的矩阵。


网络异常,图片无法展示
|

使用方法

它对图片的处理可以分为以下四个基本类型:

Translate——平移变换

@Override
public boolean postTranslate(float dx, float dy) {
    oops();
    return false;
}

该方法在x轴和y轴上简单地移动图像,采用两个浮点数作为参数,表示在每个轴上移动的数量。第一个参数是图像将在x轴上移动的数量,而第二个参数是图像将在y轴上移动的数量。在x轴上使用正数进行平移将向右移动图像,而使用负数将向左移动图像。在y轴上使用正数进行平移将向下移动图像,而使用负数将向上移动图像。

Scale——缩放变换

@Override
public boolean postScale(float sx, float sy) {
    oops();
    return false;
}

该方法采用两个浮点数作为参数,分别表示在每个轴上所产生的缩放量。第一个参数是x轴的缩放比例,而第二个参数是y轴的缩放比例。

Rotate——旋转变换

@Override
public boolean postRotate(float degrees, float px, float py) {
    oops();
    return false;
}
@Override
public boolean postRotate(float degrees) {
    oops();
    return false;
}

该方法采用一个浮点数表示旋转的角度。围绕默认点(0,0),正数将顺时针旋转图像,而负数将逆时针旋转图像,其中默认点是图像的左上角。

Skew——错切变换

@Override
public boolean postSkew(float kx, float ky, float px, float py) {
    oops();
    return false;
}
@Override
public boolean postSkew(float kx, float ky) {
    oops();
    return false;
}

错切变换,在数学上又称为Shear mapping(可叫做“剪切变换”)或是Transvection(缩并),它是一种比较特殊的线性变换。错切变换的效果就是让所有点的x坐标(或者y坐标)保持不变,而对应的y坐标(或者x坐标)则按比例发生平移,且平移的大小和该点到x轴(或y轴)的垂直距离成正比。它是属于等面积变换,即一个形状在错切变换的前后,其面积是相等的。

具体说明

该API对于每一种变换都提供了三种操作方式:

set(用于设置Matrix中的值)

post(后乘,根据矩阵的原理,相当于左乘)

pre(先乘,相当于矩阵中的右乘)

注:默认时,这四种变换都是围绕(0,0)点变换的,也可以自定义围绕的中心点,通常围绕中心点。

小结

希望可以早日完成app!

相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
45 0
|
4月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
168 0
|
4月前
|
XML JSON Java
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
66 0
|
21天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
21 1
|
4月前
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
54 0
|
4月前
|
Android开发
[Android]制作9-Patch图片
[Android]制作9-Patch图片
42 0
|
4月前
|
XML JSON Android开发
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
50 0
|
4月前
|
XML 缓存 Java
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
117 0
|
4月前
|
XML 算法 Java
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
109 0
|
4月前
|
存储 Android开发
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
53 0