【问题标题】:How can I achieve this in Java?我怎样才能在 Java 中实现这一点?
【发布时间】:2012-09-26 07:51:40
【问题描述】:

我正在尝试在 Java 中获取字符串中像素的 XY 坐标,但我不知道如何。

我会尽量解释清楚。

假设我想做这样的事情:

paint.setTextSize(40);
canvas.drawText("hello", 100, 100, paint);

但不是实际绘制该文本,我想要一个与该文本中所有像素相对应的坐标列表,它可以相对于文本或画布的开头,没关系。

这有可能吗?在 Google 上找不到任何相关信息。

谢谢。

【问题讨论】:

  • 你试过什么?您是否尝试过天真的解决方案?因为您可以制作画布的副本,将文本放在那里并比较像素 - 与您的文本不同的像素。显然,这将非常缓慢。为什么你还需要这个?

标签: java text paint java-canvas


【解决方案1】:

我怀疑是否可以不费吹灰之力。

一方面,这取决于您使用的字体。

我能想象的唯一方法是在 BufferedImage 内部绘制文本,然后检查每个像素的颜色。

比如说,在白色背景上用黑色文本颜色绘制它。

伪代码:

for each pixel row{
    for each pixel column{
        if(pixel.getColor() == (new Color()).black)
           save coordinates
    }
}

【讨论】:

  • 我让它工作得很好,忘了说它是为 Android 设计的,所以我必须使用 Bitmap 而不是 BufferedImage。谢谢。
【解决方案2】:

我认为这应该回答您的问题: Calculate text size according to width of text area

您可以确定文本大小,但单个像素取决于字体和重量等参数。

如果您需要单个字符的边界,您可以使用子字符串

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2012-02-09
    • 2021-10-01
    • 2020-02-07
    • 1970-01-01
    • 2023-02-23
    相关资源
    最近更新 更多