1

我正在使用 OpenWRT 在嵌入式设备上进行开发。每当我尝试使用 fswebcam 从 /dev/video0 捕获和图像并想向图像添加一些文本(--info 开关)时,我都会收到此错误。

所以标准字体“luxisr”不起作用。我试过提供我自己的 .ttf 字体。结果相同。是否有 fswebcam 可以在不更改我当前安装(即当前 libgd 构建)的情况下使用的字体?我认为在 libgd 中包含 freetype 字体支持,重建和重新安装将是不平凡的(为什么他们不会默认启用它)。

感谢您对此的任何帮助...

更新 [2011 年 3 月 31 日]:我已经向 fswebcam 的作者 Philip Heron 提出了这个问题。今天早上他告诉我:

fswebcam 现在只能使用 TTF 字体,并且依赖 libgd 中的 freetype 支持来渲染它们。有两种选择:

  1. 使用 freetype 支持重建 libgd。我不熟悉 OpenWRT 构建系统,但这可能是最简单的选择。Freetype 似乎已经打包好了,所以应该不会痛苦。

  2. libgd 还内置了一个简单的位图字体。如果没有检测到自由类型支持,我可以让 fswebcam 依靠它,但它看起来不会那么好。

-菲尔

所以我继续前进,将重新/交叉编译带有自由类型支持的 libgd。

4

3 回答 3

3

你可以做的是:

  • 将 libfreetype 添加到 .config
  • 改变[buildroot_DIR]/package/feeds/packages/gd/Makefile

并将线设置 --without-freetype--with-freetype=$(STAGING_DIR)/usr

  • (重新)构建 libgd 和 libfreetype 包并更新 OpenWrt 系统
  • 然后获取所需 ttf 的副本(例如 ubuntu /usr/share/fonts/truetype/freefont/FreeSans.ttf)

  • 导出 GDFONTPATH

  • 在 fswebcam.config 中设置所需的字体
于 2011-10-19T09:54:52.930 回答
0

我有同样的问题。就我而言,fswebcam 依赖于 libgd 库,它使用 $GDFONTPATH 环境变量来定位字体。在我的环境(Ubuntu 11.04)中,没有设置这样的变量。

在命令行上发出 strace

$ strace fswebcam --font Arial:12 --save /tmp/test/test.jpg

导致以下输出

access("/usr/X11R6/lib/X11/fonts/TrueType/Arial.ttf", R_OK) = -1 ENOENT (没有那个文件或目录)

...

access("/usr/X11R6/lib/X11/fonts/TTF/Arial.ttf", R_OK) = -1 ENOENT (没有那个文件或目录)

...

这让我想到字体查找存在一些问题。

设置 GDFONTPATH 解决了这个问题。例如,我使用了以下

$ export GDFONTPATH=~/.fonts/

使用(或任何其他字体)

$ locate Arial.ttf

获取您的字体目录,这取决于您的操作系统 (/usr/local/share/fonts/truetype, /usr/share/fonts/truetype, ...) 。您的千分之一可能会有所不同。

我确信可以使用更清洁的东西,但这个解决方案很有效。希望这有帮助。

于 2011-07-11T17:56:33.047 回答
0

我在谷歌中发现了这个问题,同样的错误。仅用于 debian 中的信息:

apt-get install ttf-xfree86-nonfree

并添加到 fswebcam.conf:

font /usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf

并运行

fswebcam --config /etc/fswebcam.conf

于 2014-05-12T10:50:20.930 回答