PS4:
有人问到transformImageBitmap()中这俩句话是什么意思:
imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2)); imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2));
个人的理解如下:
preTranslate相当于在对图像进行任何矩阵变换前先进行preTranslate,postTranslate相反,进行所有变换后再执行postTranlate。
这俩句的意思是:在做任何变换前,先将整个图像从图像的中心点移动到原点((0,0)点),执行变换完毕后再将图像从原点移动到之前的中心点。
如果不加这俩句,任何变换将以图像的原点为变换中心点,加了之后,任何变换都将以图像的中心点为变换中心点。
举个例子,对图像进行旋转,需要俩个参数:一个是旋转的角度,另一个是旋转中心的坐标。旋转中心的坐标影响旋转的效果。这个能明白吗?你拿一根棍子,拿着棍子的一端进行旋转和拿在棍子中间旋转,是不一样的。preTranslate和postTranslate执行后对图像本身不会有影响,影响的是对图像进行变换时的旋转轴。
说了这么多有点绕,其实就是矩阵变换的知识。
PS5 ON PS2:
这个问题在google group下有过很充分的讨论,貌似一般只在debug模式下存在。现在我使用这段代码没有出现OOM问题了
希望本文所述对大家Android程序设计有所帮助。
注:相关教程知识阅读请移步到Android开发频道。










