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

标签 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() 并使用眼睛坐标并在脸上绘制眼镜?或者我应该使用其他方式?

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

最佳答案

首先缩放位图:

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。

关于java - 缩放图像并将其放置在Android的LinearLayout中的特定位置(坐标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999606/

相关文章:

java - 在 android 中创建文件并写入该文件时遇到问题。未处理的异常 java.io.FileNotFoundException

java - android读取和写入位图失败

java - GridView 超出内存预算

java - 如何在应用程序( Activity )仍在运行时刷新它?

Java 相当于 javascript 中的返回函数

java - 如何处理 ListView 中的复选框并从自定义基本适配器发回信息

android - 如何实现获取和返回 LifeCycle 的方法

c - 在C中显示颜色数组

java - 在 Canvas android java中 move 位图

Java 正则表达式