正文

基本的圖像縮放和旋轉(zhuǎn)(1)

Android多媒體開發(fā)高級編程 作者:(美)艾佛瑞


Android API有一個Matrix(矩陣)類,當在現(xiàn)有位圖對象上進行繪制或從另一個位圖對象創(chuàng)建某個位圖對象時,可以使用該類。這個類使得我們能夠在一幅圖像上應(yīng)用空間轉(zhuǎn)換。這種類型的轉(zhuǎn)換可以是旋轉(zhuǎn)、裁剪、縮放或者更改圖像的坐標空間。

Matrix類以9個數(shù)字的數(shù)組表示轉(zhuǎn)換。在許多情況下,這些數(shù)字可以由一個公式生成,該公式在數(shù)學上表示應(yīng)該發(fā)生的轉(zhuǎn)換。例如,對于旋轉(zhuǎn)公式,通過使用正弦和余弦生成矩陣中的數(shù)字。

Matrix類中的數(shù)字也可以手動輸入。為了了解Matrix類如何工作,我們將以一些手動轉(zhuǎn)換作為開始。

Matrix類中的每個數(shù)字都將應(yīng)用于圖像上每個點的3個坐標(x、y或z)之一。

例如,下面是一個包含9個浮點數(shù)的矩陣:

1 0 0

0 1 0

0 0 1

頂行(1 , 0 , 0)指定源圖像的x坐標將根據(jù)以下公式轉(zhuǎn)換:x = 1x + 0y + 0z。正如您所看到的,值在矩陣中的放置位置決定對應(yīng)數(shù)字將會如何影響結(jié)果。頂行總是會影響到x坐標,但可以操作源圖像的x、y和z坐標。

第二行(0 , 1 , 0)意味著y坐標將被確定為y = 0x + 1y + 0z,第三行(0 , 0 , 1)意味著z坐標將確定為z = 0x + 0y + 1z。

換句話說,這個矩陣不會做任何轉(zhuǎn)換;所有內(nèi)容都會按照它在源圖像中的情況放置。

為了在代碼中實現(xiàn)這一點,我們將創(chuàng)建Matrix對象,然后通過其setValues方法顯式地設(shè)置值。

Matrix matrix = new Matrix();

matrix.setValues(new float[] {

     1, 0, 0,

     0, 1, 0,

     0, 0, 1 

});


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號