android(高级)使用 DrawText 保存位图画布,但需要计算文本大小

发布于 2024-11-14 12:52:33 字数 1020 浏览 3 评论 0 原文

我有一个画布,可以在上面绘制文本。
(这是相当先进的,我想希望你能关注我)

请参阅下面的附图。

功能是我可以点击屏幕来更改文本大小。
点击左侧屏幕 = 较小的字体。
点击右侧屏幕=更大的字体。
然后我还可以移动屏幕上的文本。

当文本大小合适并且我已将文本移动到我想要的位置时,
然后我想将它保存回原来的位图。

我使用 options.inSampleSize = 4; 最初加载 Bitmap

具有 Bitmap 的 ImageView 当然比原始 Image 小。
需要某种计算。 这往往很难做到。

我有 options.inSampleSize = 4 位图比率。
根据风景或肖像的不同,有 0.59、0.69 之分。

我正在尝试以某种方式改变新的位图setTextSize
看起来与 ImageView 较小的 Bitmap 相同。

我在这里能做什么?
我有一种感觉,因为人们永远不知道图像的大小。
我必须以某种方式将加载的位图比率缩放/限制为固定比率。

然后我需要使用百分比或其他东西来传输文本位置 到更大的图像。
当涉及到初始时我可以这样做 (图中红色小球)位置。因此,本文的起点。

但我不知道文本有多长,所以我被卡住了,所以说并寻求建议

我尝试的一种方法是将 paint.getTextSize() 与比率相除,例如 0.59。起初这看起来像是一个解决方案。但图像比例不固定,字体大小也不固定,还需要其他东西。

这是显示问题的两张图片。

在手机上 位图:

在此处输入图像描述

保存的新位图:

在此处输入图像描述

I have a Canvas that i draw text on.
(this is quite advanced i think hope you can follow me)

See attached image below.

The functionality is that I can tap on the screen to change the textsize.
Tap left screen = smaller Font.
Tap right Screen = bigger Font.
I can then also move the text on the screen.

When textsize is ok and i have moved the text where i want it,
Then I want to save it back to the original Bitmap.

I use options.inSampleSize = 4; to initially load the Bitmap

The ImageView that have the Bitmap is of course smaller then the original Image.
Some kind of calculation is needed.
This tends to be quite difficult to do.

I have the options.inSampleSize = 4 Bitmaps Ratio.
It's 0.59, 0.69 something depending on Landscape or portrait.

Im playing around with that to somehow change the new BitmapsetTextSize
to look the same as the ImageView smaller Bitmap.

What could i do here?
I have a feeling that since one never know what size an image have.
I have to somehow scale/constrain the Loaded Bitmap Ratio to a fixed Ratio.

Then i need to using percentage or something to transfer the text location
to the bigger image.
I can kind of do that when it comes to initial
(red small ball on picture) location. Hence, the starting point of the text.

But i dont know how long the text is so im stuck so so speak and asking for advice

One way i tried was to divide paint.getTextSize() with the Ratio something like 0.59. That looked like a solution at first. But the image ratio is not fixed and the Font size is not fixed something else is needed.

Here are two pictures showing the problem.

On phone Bitmap:

enter image description here

The saved new Bitmap:

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

望笑 2024-11-21 12:52:33

我不是 100% 清楚我明白你的意思,但可以尝试一下。听起来您已经接近正确的方法了。您需要计算图像缩放的比率以适合手机上的视图,而不是使用固定的比率,然后您可以按反比例缩放文本。因此,步骤如下:

  • 测量原始图像的宽度(高度也可以,但我们只需要一维)
  • 测量缩放图像的宽度
  • 计算比率(ratio = 原始 / 缩放
  • 让用户输入文本,
  • 然后您可以使用以下方法获取文本大小:floatpaintSize = Paint.getTextSize();
  • 要在最终图像上渲染,请使用paint.setTextSize(paintSize /比率);

I'm not 100% clear that I understand what you mean, but here's a go. It sounds like you were close to the right approach. Instead of using a fixed ratio, you need to calculate the ratio that the image is scaled by to fit in the view on the phone, then you can scale the text by the inverse ratio. So in steps:

  • Measure the width of the original image (height would do just as well, but we just need one dimension)
  • Measure the width of the scaled image
  • Calculate ratio (ratio = original / scaled)
  • Let the user type their text
  • You can then get the text size using something like: float paintSize = paint.getTextSize();
  • For rendering on the final image, use paint.setTextSize(paintSize / ratio);.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文