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

Scaling an image and place it in the specific location (coordinates) in Android's LinearLayout

我在 android 应用程序开发方面不是很熟练,我正在开发一个测试应用程序。我检测到了脸和眼睛,现在我要根据眼睛的坐标在脸上画一些像粉刺或疤痕的东西(例如脸颊上的眼睛下方)。稍后,我会在适当的位置戴上眼镜或帽子。

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

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

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

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

首先缩放位图:

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。