缩放图像并将其放置在Android的LinearLayout中的特定位置(坐标)

时间:2015-05-02 07:24:37

标签: java android bitmap scaling

我在Android应用程序开发方面不是很熟练,而且我正在开发测试应用程序。我检测到了脸部和眼睛,现在我将根据眼睛的坐标在脸上(例如脸颊上的眼睛下方)画出痤疮或疤痕。之后,我会把眼镜或帽子放在适当的位置。

我知道左眼和右眼的坐标(代码中的leftEyePosx ... [等等])。例如136x168 [左]和216x168 [右](镜像中)。现在,我正在计算比例:玻璃位图的宽度应缩放到80像素(216-136)或更大,80像素乘以原始图像的高度宽高比(例如80 * 0.7)。我有代码的位图:

glassBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.glass_01);

现在,我如何重新缩放眼镜并使用方法canvas.drawBitmap()并使用眼睛坐标并在脸上绘制玻璃?或者我应该用另一种方式?

提前致谢,抱歉我的英语不好:)

1 个答案:

答案 0 :(得分:1)

首先缩放位图:

Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, targetWidth, targetHeight, false);

然后在xPos和yPos:

上绘制另一个位图
Canvas canvas = new Canvas(baseBitmap);
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(overlayBitmap, xPos, yPos, paint); 

xPos和yPos是覆盖位图的左上角。例如,如果基本图像眼睛应该显示在叠加位图的中间,则必须通过减去宽度和高度的一半来调整此值,以找到所需的xPos和yPos。