使用Image Magick生成低分辨率黑白文本

时间:2018-08-01 17:08:23

标签: imagemagick

我需要在ImageMagick中生成文本的低分辨率黑白图像。这些图像将绘制在一个小的LED矩阵中。文字的高度必须为7像素。

目前,我正在使用:

convert -negate -threshold 15% -font Courier -size 80x11 caption:'hello' out.bmp

输出图像:

Output image

由于低分辨率和抗锯齿校正,即使高度超过了我的需要,字母也不是漂亮且对称的。有没有人这样做可以帮助我?

版本:ImageMagick 6.8.9-9 Q16 x86_64

5 个答案:

答案 0 :(得分:3)

我发现的解决方案是使用TrueType字体。刚刚从互联网上获得了免费的字体,并以它的大小使用了它。

P.S .:也切换为OpenCV。我的Python应用程序动态生成图像。每分钟调用ImageMagick数次(可能接近一百次)的成本太高。

发布摘要,希望对您有所帮助。

import cv2 as cv
from PIL import ImageFont, ImageDraw, Image

# Creates a black image with 80x10 size
img = Image.new('RGBA', (80, 10), (0,0,0,0))
draw = ImageDraw.Draw(img)
# Load TrueType font of height size 8
font = ImageFont.truetype("font.ttf", 8)

# Draw text using the loaded font
draw.text((0, 0), "Hello World!", font=font)

img.save("out.bmp")

输出图像:

Output Image

答案 1 :(得分:1)

我倾向于输出大于要求的字母,然后修剪所有多余的备用空间,以充分利用可用的分辨率,然后根据您的特定需求调整大小:

convert -size 320x32 -font Courier label:'hello' -trim +repage -resize 80x8 +write out.gif

enter image description here

答案 2 :(得分:1)

马克,我想他想要二进制结果。但是你有个好主意。

让我们以Mark的结果,阈值为准,然后缩小到8像素高。这个ImageMagick命令似乎比我以前的帖子更好。

马克的输出:

enter image description here

convert wcwuj.gif -threshold 60% +write thresh.gif -scale x8 result.gif


阈值结果:

enter image description here

定标结果:

enter image description here

也许使Mark的图像更大,并选择更好的阈值会产生更好的结果。

答案 3 :(得分:0)

您尚未告诉我们ImageMagick或平台的版本,也没有给我们显示结果以查看可能出问题的地方。另外,尽管ImageMagick 6相当宽容,但您的ImageMagick语法也不正确。

这是我使用ImageMagick 6.9.10.8 Q16 Mac OSX Sierra所获得的。第一个输出的高度为8像素,第二个输出的比例为1000%(10x)。

这个论坛似乎没有将bmp转换为可用的显示格式,因此我使用GIF代替BMP。但是无论是BMP还是GIF,我的结果都一样

convert -size x8 -font Courier label:'hello' -negate -threshold 20% +write out.gif -scale 1000% out2.gif


enter image description here

enter image description here

我曾尝试更改阈值,但更大或更小的值会使情况更糟。大约10-30%的范围会产生相同的结果。

我还尝试使用-monochrome代替-threshold并获得以下信息:

convert -size x8 -font Courier label:'hello' -negate  -monochrome +write out3.gif -scale 1000% out4.gif


enter image description here

enter image description here

您可以尝试点矩阵字体。参见https://www.1001fonts.com/digital+dot-matrix-fonts.html?page=1&items=10。我还没有尝试过。

答案 4 :(得分:0)

您可以尝试一些旧的X11字体。这些是手工绘制的,而不是从一组曲线上绘制的,因此它们看起来非常小。

例如,如果我运行xfontsel,我将得到如下所示(为了清楚起见,将其放大):

enter image description here

看看/usr/share/fonts/X11/misc