Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在非矩形形状内呈现文本_Python_Image Processing_Text - Fatal编程技术网

Python 在非矩形形状内呈现文本

Python 在非矩形形状内呈现文本,python,image-processing,text,Python,Image Processing,Text,例如,我正在尝试在非矩形(或角度为矩形)区域内的图像上渲染文本。我希望它水平渲染并填充可用空间 我尝试过各种工具,比如PIL和ImageMagick,但它们只允许在矩形框中渲染文本,而不允许在任意多音区域中渲染文本,这意味着部分空间将永远不会被使用,或者文本可以在预期区域之外渲染 理想情况下,我希望完全使用python/使用现有的python库来完成这项工作,但如果需要,我将使用另一种语言。我不明白。是否希望文本在多边形区域居中?或者希望文本沿一条或多条边旋转一个角度。可以使用-annotate

例如,我正在尝试在非矩形(或角度为矩形)区域内的图像上渲染文本。我希望它水平渲染并填充可用空间

我尝试过各种工具,比如PIL和ImageMagick,但它们只允许在矩形框中渲染文本,而不允许在任意多音区域中渲染文本,这意味着部分空间将永远不会被使用,或者文本可以在预期区域之外渲染


理想情况下,我希望完全使用python/使用现有的python库来完成这项工作,但如果需要,我将使用另一种语言。

我不明白。是否希望文本在多边形区域居中?或者希望文本沿一条或多条边旋转一个角度。可以使用-annotate在ImageMagick中绘制有角度的文本。请参阅和@fmw42,文本应该是水平的(我想应该是居中的,不过我认为这不太重要)。简单的平移/旋转不是问题。问题是,如果我使用一个矩形的边界框(这是PIL等做的),文本将只显示一个类似的区域。当然,我可以选择不同的区域,以获得更多的水平空间,但这样我就会失去垂直空间:我永远无法有效地使用整个形状。更好的例子可能是将文本放入(圆形/形状怪异的)文本气泡中。如果我错了,请纠正我,但是,您希望文本在水平方向上尽可能多地填充,并且会有长度不均匀的行。在我的脑海里,我想不出任何方法可以自动做到这一点;但是您可以通过在文本字符串中的适当位置放置换行符来手动执行此操作,以便换行到下一行并使其居中对齐。例如,这可以在带有-annotate的ImageMagick中完成。但是,在你使用的字体和字号的正确位置换行将意味着反复试验。你可以编写一个复杂的脚本,给定点大小、字体、字距、字间距和行距,以获得字形尺寸,从而计算出在给定位置一行需要多少字符在背景范围内的垂直位置使用遮罩查找菱形形状的边缘。然后,在菱形遮罩限制内,将文本一行一行地写入该行的适当垂直位置。