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

Imagemagick 使用Image Magick生成低分辨率黑白文本,imagemagick,Imagemagick,我需要在ImageMagick中生成文本的低分辨率黑白图像。这些图像将绘制在一个小型LED矩阵中。文本需要有7个像素的高度 目前,我正在使用: convert -negate -threshold 15% -font Courier -size 80x11 caption:'hello' out.bmp 输出图像: 即使高度超过我的需要,由于低分辨率和抗锯齿校正,字母也不漂亮和对称。有人这样做过吗?能帮我吗 版本:ImageMagick 6.8.9-9 Q16 x86_64您没有告诉我们Im

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

目前,我正在使用:

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

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


版本:ImageMagick 6.8.9-9 Q16 x86_64

您没有告诉我们ImageMagick或平台的版本,并且您没有显示您的结果,以便我们查看可能的错误。此外,您的ImageMagick语法不正确,尽管ImageMagick 6相当宽容

这是我使用ImageMagick 6.9.10.8 Q16 Mac OSX Sierra得到的。第一个输出为8像素高,第二个输出按1000%(10倍)缩放

这个论坛似乎并没有将bmp转换成一种可用的显示格式,所以我用GIF代替bmp。但无论是BMP还是GIF,我的结果都是一样的

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

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

我还尝试使用-单色代替-阈值,得到以下结果:

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


你可以试试点阵字体。看见我没有试过任何一款。

您没有告诉我们ImageMagick或platform的版本,您也没有向我们展示您的结果,以便我们了解可能的错误。此外,您的ImageMagick语法不正确,尽管ImageMagick 6相当宽容

这是我使用ImageMagick 6.9.10.8 Q16 Mac OSX Sierra得到的。第一个输出为8像素高,第二个输出按1000%(10倍)缩放

这个论坛似乎并没有将bmp转换成一种可用的显示格式,所以我用GIF代替bmp。但无论是BMP还是GIF,我的结果都是一样的

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

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

我还尝试使用-单色代替-阈值,得到以下结果:

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


你可以试试点阵字体。看见我没有尝试过任何一种方法。

我倾向于输出大于要求的字母,然后修剪任何多余的空间,以便最大限度地利用可用的分辨率,然后调整大小以满足您的特定需要:

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

我倾向于输出比要求大的字母,然后修剪任何多余的空间,以便最大限度地利用可用的分辨率,然后根据您的具体需要调整大小:

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

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

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

马克的产出:


阈值结果:

缩放结果:


也许让马克的图像更大,选择更好的阈值会产生更好的结果。

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

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

马克的产出:


阈值结果:

缩放结果:


也许将Mark的图像放大并选择更好的阈值会产生更好的效果。

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

例如,如果我运行
xfontsel
我会得到如下结果(为了清晰起见放大):


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

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

例如,如果我运行
xfontsel
我会得到如下结果(为了清晰起见放大):


看看
/usr/share/font/X11/misc

我找到的解决方案是使用TrueType字体。刚刚从互联网上得到了一种免费字体,并按照它的大小使用

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

发布一个片段,希望对您有所帮助

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")
输出图像:


我找到的解决方案是使用TrueType字体。刚刚从互联网上得到了一种免费字体,并按照它的大小使用

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

发布一个片段,希望对您有所帮助

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")
输出图像:


真正的问题是什么?你是在用树莓圆周率在LED矩阵上写字吗?请更具体地说明您实际想要做什么。问题是输出图像中的字母格式不正确。该应用程序将在SoM上运行,但我现在正在我的开发人员工作站上运行。您可以通过定义自己的字体来获得更清晰的文本-这并不太难。。。真正的问题是什么?你是在用树莓圆周率在LED矩阵上写字吗?请更具体地说明您实际想要做什么。问题是输出图像中的字母格式不正确。该应用程序将在SoM上运行,但我现在正在我的开发人员工作站上运行。您可以通过定义自己的字体来获得更清晰的文本-这并不太难。。。问题是,在应用阈值(像素需要是白色或黑色,或开或关)后,字母不再对称。不知道我的方法是否是你