【问题标题】:Scaling an image and place it in the specific location (coordinates) in Android's LinearLayout缩放图像并将其放置在 Android 的 LinearLayout 中的特定位置(坐标)
【发布时间】:2015-05-02 07:24:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java android bitmap scaling


    【解决方案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。

    【讨论】:

    • 抱歉 Mr.Karlsson,你会回答更新后的问题吗? tnx.
    • 发布新问题,而不是编辑已回答的旧问题。建议您在新问题中指定“不工作”的含义。
    • 好的。我认为它可能被视为重复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2019-07-10
    相关资源
    最近更新 更多