【问题标题】:Get geometry of text on an image获取图像上文本的几何形状
【发布时间】:2020-10-15 13:40:00
【问题描述】:

我想以这样的方式在图像上绘制文本:

convert -quality 100 -font Oswald-Regular -pointsize 515 -fill black -draw "text 1339.0,1099 'some text'" /tmp/ascript.png /tmp/ascript.png

我需要知道带有上述参数(大小、字体、文本)的文本的尺寸。我怎样才能得到它?

我尝试过这样的事情:

convert -size 5000x1500 xc:lightblue -font Oswald-Regular -pointsize 515 -fill none -undercolor white -annotate +20+100 'some text' -trim  info:

但它给出了错误的结果:

xc:lightblue XC 1834x250 5000x1500+19+0 16-bit sRGB 0.010u 0:00.000

.

根据这 3 个参数(字体、大小、文本)获取绘制图像的尺寸的正确方法(或工作方法)是什么?

我并没有严格绑定到ImageMagick,它可以是任何Linux shell的命令行工具,但是文本会被convert绘制出来。

【问题讨论】:

  • 我不介意这个解决方案有多无效,我的意思是处理一个 3 字长的文本可能需要 10 秒...我不介意。
  • 尽量避免在 PNG 图像上使用 -quality。它不适用于 JPEG,而且 PNG 图像已经是无损的。

标签: image-processing imagemagick


【解决方案1】:

有几种简单的方法可以使用 ImageMagick 和这样的命令来获取尺寸...

convert -size 5000x1500 xc:lightblue -font Oswald-Regular -pointsize 515 \
    -fill none -undercolor white -annotate +20+100 'some text' \
    -format "%[@]\n" info:

使用 FX 转义符“%@”作为“info:”输出的格式化字符串。它会显示IM对修剪后的宽度、高度、水平偏移和垂直偏移的计算,如“WxH+X+Y”。

这个类似的命令只是给出了修剪文本的宽度和高度...

convert -size 5000x1500 xc:lightblue -font Oswald-Regular -pointsize 515 \
    -fill none -undercolor white -annotate +20+100 'some text' \
    -trim +repage -format "%[w]x%[h]\n" info:

这将修剪文本,用“+repage”重置分页几何,然后输出一个显示“WxH”的字符串。

––– 编辑添加–––

我用这些命令尝试了你的图像with_text.png。输出立即跟随每个命令...

convert with_text.png -format "%[@]\n" info:
1807x389+512+115

convert with_text.png -trim +repage -format "%[w]x%[h]\n" info:
1807x389

这些在 Windows 10 上的 ubuntu bash 上使用 IMv6.8.9-9 进行了测试。如果您使用该实际图像和这些命令,我​​不确定为什么会得到不同的结果。

【讨论】:

  • 不幸的是,它对我不起作用。使用来自 You 的两个命令得到 1834x250。所以高度是 250,但是如果我使用 my 帖子中的第一个命令并打开文件(例如使用 gimp),我可以看到高度约为 380 像素。相同的字体,相同的磅值,相同的文本。你能告诉我我做错了什么吗?或者差异来自哪里?
  • 对此进行测试:转换 -size 5000x1500 xc:white -font Oswald-Regular -pointsize 515 -fill none -undercolor white -annotate +1000+1000 'some text' -format "%[@]\ n" 信息:
  • 首先你应该像这样重组你的命令...convert <input> <do stuff> <output>,尽管这不应该导致你描述的差异。如果您可以在修剪前后发布一些输出示例,将会很有帮助。
  • 我把我的例子放在这里:87.229.108.143/files/stack_question_23THj。 (cmets 中没有空间和图像上传的可能性)。我的 ImageMagick 版本是:8:6.8.9.9-7ubuntu5.15 .
  • 我测试了你的图片。请参阅我原始帖子末尾的“edited-to-add”部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 2014-08-10
  • 2013-05-12
相关资源
最近更新 更多