gpt4 book ai didi

java - 合并两个重叠的图像

转载 作者:行者123 更新时间:2023-12-01 18:51:32 27 4
gpt4 key购买 nike

您好,我有两个 ImageView ,其中一个包含从相机中选择的图片,另一个 ImageView 仅包含文本,例如“Made Hawk Nelson”,两个 ImageView 的图像如下

enter image description here

xml代码如下

  <RelativeLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="7"
android:scaleType="fitXY" >

<ImageView
android:id="@+id/imgSelectedPhoto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/txt_made_hawk_nelson"
android:layout_centerInParent="true" />

</RelativeLayout>

上面是半屏代码,上面的图片也是半屏

现在我想保存这张照片,任何人都可以帮助我,我该怎么做?也许 CANVAS 会帮助我,但我不知道该怎么做,所以请任何人帮助我

最佳答案

你的想法是对的。 Canvas 将是最简单的方法。

但您必须首先了解这些 ImageView 仅在屏幕上表示,并且使用这两个图像重叠创建位图与其在屏幕上的表示关系不大。

就像在图像的内存表示中一样,您将拥有可绘制对象(根据屏幕尺寸预先缩放,因此它们的尺寸将根据 ldpi、mdpi、hdpi 和 xhdpi 文件夹而因设备而异)和位图,其中是绝对表示。

我刚才说的所有内容都会根据您的应用程序而有所不同,我不会为您提供确切的解决方案,但会向您解释所有概念:

举个例子,假设您将背景和文本都作为 Bitmaps 对象,那么您的代码将是:

// Init our overlay bitmap
Bitmap bmp = backgroundBitmap.copy(Bitmap.Config.ARGB_8888, true);
// Init the canvas
Canvas canvas = new Canvas(bmp);
// Draw the text on top of the canvas
canvas.drawBitmap(textBitmap, 0, 0, null);

// now bmp have the two overlayed:

您可以(并且应该)进行一些数学运算,并使用 drawBitmap() 方法中的值 0、0 使文本在 Canvas 上居中。

或者,如果您有可绘制对象(例如 getResources.getDrawable(R.drawable.bkgr); ),您可以使用 draw() method绘制到 Canvas 并使用 getIntrinsicHeight 和 getIntrinsicWidth 使用 this method 创建位图

祝你编码愉快!

关于java - 合并两个重叠的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com