如何在Java中实现这个功能?

3

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

我将尝试更清楚地解释一下。

假设我想要做这样的事情:

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

但是,我不想真的绘制那个文本,我希望得到一个坐标列表,该列表对应于所有可能位于文本中的像素,这些坐标可以相对于文本或画布的起点,都可以。

这种操作是否可行?在谷歌上找不到任何相关信息。

谢谢。


3
你尝试过什么?你尝试了天真的解决方案吗?因为你可以复制画布,将文本放在那里并比较像素 - 不同的像素来自你的文本。显然,这会非常慢。你为什么需要这个? - K.L.
2个回答

4

我怀疑这是否可能,除非付出巨大的努力。

首先这取决于您使用的字体。

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

例如,在白色背景上绘制黑色文本。

伪代码:

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

我已经让它很好地工作了,忘了提到它是为Android设计的,所以我必须使用Bitmap而不是BufferedImage。谢谢。 - Suffick

1

我想这应该能回答你的问题: 根据文本区域的宽度计算文本大小

你可以确定文本的大小,但是单个像素取决于字体和参数(如字重)等因素。

如果你需要每个字符的边界,你可以使用子字符串处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接