Armadilloフォーラム

imagemagickの文字描画

sakai01

2015年11月5日 16時17分

お世話になります。酒井と申します。最近armadilloを使い始めた初心者です。

現在Armadillo-420 WLANモデル開発セットを用いてimagemagickの文字描画を行おうとしていますが、うまくいかないため質問させてください。

Userland Configurationよりimagemagickを選択しビルドすることでconvertコマンドが使えるようになりましたが、文字描画を行おうとすると以下のようなエラーが起きます。
convert -background white -fill blue -font VL-Gothic-Regular.ttf -pointsize 32 label:penlabo.net text1.png
convert: FreeType library is not available `penlabo.net'.

FreeTypeが入ってないのが原因だと考え、HP( http://armadillo.atmark-techno.com/articles/sd-a500-embedded-course-ch4 )を参考にクロスライブラリを追加しようとしましたが、以下のようなエラーが起きます。
dpkg-cross -b –a armel libfreetype6_2.5.2-3+deb8u1_armel.deb
dpkg-deb: ファイル ` libfreetype6_2.5.2-3+deb8u1_armel.deb ' は理解不能なデータメンバー data.tar.xz を含んでいます。終了します
dpkg-cross: conversion of libfreetype6_2.5.2-3+deb8u1_armel.deb failed.

data.tar.xzが原因だと考えられたのでxzが扱えるパッケージを入れようと
apt-cache search xz
で検索をかけましたが、該当するようなパッケージは見つかりませんでした。

どこから手を付けていいのかわからない状態なので何かアドバイスを頂けると助かります。申し訳ありませんがよろしくお願い致します。

コメント

> Userland Configurationよりimagemagickを選択しビルドすることでconvertコマンドが使えるようになりましたが、文字描画を行おうとすると以下のようなエラーが起きます。
> convert -background white -fill blue -font VL-Gothic-Regular.ttf -pointsize 32 label:penlabo.net text1.png
> convert: FreeType library is not available `penlabo.net'.

distの convert は、 freetype の対応無しでビルドされるようです。
このメッセージは、free typeに対応していない時に表示されるようです。

Makefile の中に HasTTF_FALSE の定義があるので、この辺を修正してみるか、
debian から convert を持ってきてください。

http://armadillo.atmark-techno.com/howto/use-debian-binary

# 初めてなのに、手間な作業になってしまってすみません。
# わからなかったら、また聞いてください。

御回答ありがとうございます。

> Makefile の中に HasTTF_FALSE の定義があるので、この辺を修正してみるか、
> debian から convert を持ってきてください。
>
> http://armadillo.atmark-techno.com/howto/use-debian-binary

HasTTF_FALSE の定義の修正について参考になるHPなどはあるでしょうか?
もしくは修正箇所を具体的に教えてほしいのですが可能でしょうか?

面倒な質問だとは思いますが、armadillo初心者の自分には手に負えない状態です。
申し訳ありませんがよろしくお願い致します。

at_yuma.arakawa

2015年11月6日 15時24分

> もしくは修正箇所を具体的に教えてほしいのですが可能でしょうか?
Atmark Distの以下のファイルが修正対象です。
atmark-dist/user/imagemagick/Makefile

以下の記述がありますので、

HasTTF_FALSE = 
HasTTF_TRUE = #

以下のように修正してください。

HasTTF_FALSE = #
HasTTF_TRUE = 

御回答ありがとうございます。

> 以下の記述がありますので、
>

> HasTTF_FALSE = 
> HasTTF_TRUE = #
> 

> 以下のように修正してください。
>

> HasTTF_FALSE = #
> HasTTF_TRUE = 
> 

上記のように修正し、ビルドしたものをarmadilloに書き込みましたが、同じ結果になりました。
convert -background white -fill blue -font VL-Gothic-Regular.ttf -pointsize 32 label:penlabo.net text1.png
convert: FreeType library is not available `penlabo.net'.

なにか手順が間違っているのでしょうか?
申し訳ありませんがよろしくお願い致します。

お世話になります。酒井です。
自分で解決方法を探していたのですが、行き詰ってしまったのでもう一度質問させてください。

最初の返信で
>Makefile の中に HasTTF_FALSE の定義があるので、この辺を修正してみるか、
>debian から convert を持ってきてください。

>http://armadillo.atmark-techno.com/howto/use-debian-binary

と教えていただいたので、HasTTF_FALSE の定義を修正しましたが、やはりうまくいきませんでした。
> 上記のように修正し、ビルドしたものをarmadilloに書き込みましたが、同じ結果になりました。
> convert -background white -fill blue -font VL-Gothic-Regular.ttf -pointsize 32 label:penlabo.net text1.png
> convert: FreeType library is not available `penlabo.net'.

また「Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法」を参考に、imagemagickのパッケージをダウンロードし、展開しようとしましたが以下のようなエラーがでました。
atmark@atde3:~$ dpkg -x imagemagick_6.8.9.9-5_armel.deb temp-dir
dpkg-deb: ファイル `imagemagick_6.8.9.9-5_armel.deb' は理解不能なデータメンバー data.tar.xz を含んでいます。終了します

申し訳ないのですが、アドバイスをいただけないでしょうか?
できれば具体的な手順等を示していただけると助かります。

よろしくお願い致します。

> また「Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法」を参考に、imagemagickのパッケージをダウンロードし、展開しようとしましたが以下のようなエラーがでました。
> atmark@atde3:~$ dpkg -x imagemagick_6.8.9.9-5_armel.deb temp-dir
> dpkg-deb: ファイル `imagemagick_6.8.9.9-5_armel.deb' は理解不能なデータメンバー data.tar.xz を含んでいます。終了します

ATDE3(Debian 5.0 lenny)のパッケージはDebianのパッケージサイトからは検索できませんので、以下からダウンロードして下さい。
http://archive.debian.net/lenny/armel/imagemagick/download

上記URLでダウンロードした"imagemagick_6.3.7.9.dfsg2-1~lenny4_armel.deb"は、
ATDE3上で"dpkg -x"により展開できます。

御回答ありがとうございます。

imagemagick_6.3.7.9.dfsg2-1~lenny4_armel.debをダウンロードしてdpkg -xコマンドにより展開することができました。
展開した後のファイルはどのファイルをarmadilloのどこにコピーすれば使えるようになるのでしょうか?
申し訳ありませんがよろしくお願い致します。

> 展開した後のファイルはどのファイルをarmadilloのどこにコピーすれば使えるようになるのでしょうか?
展開先のディレクトリにあるusr/bin/convertと、convertの実行に必要な共有ライブラリをArmadilloへ持ってくる必要があります。
ただし、convertの実行に必要な共有ライブラリは手作業でArmadilloへ持ってくるよりも、
Atmark Distのmake時に組み込まれるようにする方が手軽ですので、以下の手順を試してみて下さい。

makeを実行した後のAtmark Distのソースコードディレクトリで以下の作業を行って下さい。
なお、imagemagick_6.3.7.9.dfsg2-1~lenny4_armel.debは~/imagemagickへ展開したものとします。

[ATDE3 ~]$ cd atmark-dist/
[ATDE3 ~/atmark-dist]$ cp ~/imagemagick/usr/bin/convert romfs/usr/bin/
[ATDE3 ~/atmark-dist]$ make romfs
[ATDE3 ~/atmark-dist]$

※ make romfs時、romfs/ 以下の実行ファイルに必要な共有ライブラリの内、
  ATDEにインストール済みのものを romfs/ へ追加します。

以下は自動で組み込まれないので、ここでは手動でAtmark Distへ追加します。
- liblcms1パッケージ
- liblcms.so.1
- libbz2-1.0パッケージ
- libbz2.so.1.0
- libmagick10パッケージ
- libMagick.so.10
- libWand.so.10
- label.la, label.so
- png.la, png.so
- libpng12-0パッケージ
- libpng12.so.0

[ATDE3 ~/atmark-dist]$ cd
[ATDE3 ~]$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/pool/main/l/lcms/liblcms1_1.17.dfsg-1+lenny2_armel.deb
[ATDE3 ~]$ dpkg -x liblcms1_1.17.dfsg-1+lenny2_armel.deb liblcms1
[ATDE3 ~]$ cp liblcms1/usr/lib/liblcms.so.1.0.16 atmark-dist/romfs/usr/lib/
[ATDE3 ~]$ ln -s liblcms.so.1.0.16 atmark-dist/romfs/usr/lib/liblcms.so.1
[ATDE3 ~]$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/pool/main/b/bzip2/libbz2-1.0_1.0.5-1+lenny1_armel.deb
[ATDE3 ~]$ dpkg -x libbz2-1.0_1.0.5-1+lenny1_armel.deb libbz2
[ATDE3 ~]$ cp libbz2/lib/libbz2.so.1.0.4 atmark-dist/romfs/usr/lib/
[ATDE3 ~]$ ln -s libbz2.so.1.0.4 atmark-dist/romfs/usr/lib/libbz2.so.1.0
[ATDE3 ~]$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/pool/main/i/imagemagick/libmagick10_6.3.7.9.dfsg2-1~lenny4_armel.deb
[ATDE3 ~]$ dpkg -x libmagick10_6.3.7.9.dfsg2-1~lenny4_armel.deb libmagick10
[ATDE3 ~]$ cp libmagick10/usr/lib/libMagick.so.10.0.9 atmark-dist/romfs/usr/lib/
[ATDE3 ~]$ ln -s libMagick.so.10.0.9 atmark-dist/romfs/usr/lib/libMagick.so.10
[ATDE3 ~]$ cp libmagick10/usr/lib/libWand.so.10.0.9 atmark-dist/romfs/usr/lib/
[ATDE3 ~]$ ln -s libWand.so.10.0.9 atmark-dist/romfs/usr/lib/libWand.so.10
[ATDE3 ~]$ mkdir -p atmark-dist/romfs/usr/lib/ImageMagick-6.3.7/modules-Q16/coders/
[ATDE3 ~]$ cp libmagick10/usr/lib/ImageMagick-6.3.7/modules-Q16/coders/label.{la,so} atmark-dist/romfs/usr/lib/ImageMagick-6.3.7/modules-Q16/coders/
[ATDE3 ~]$ cp libmagick10/usr/lib/ImageMagick-6.3.7/modules-Q16/coders/png.{la,so} atmark-dist/romfs/usr/lib/ImageMagick-6.3.7/modules-Q16/coders/
[ATDE3 ~]$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/pool/main/libp/libpng/libpng12-0_1.2.27-2+lenny5_armel.deb
[ATDE3 ~]$ dpkg -x libpng12-0_1.2.27-2+lenny5_armel.deb libpng12-0
[ATDE3 ~]$ cp libpng12-0/usr/lib/libpng12.so.0.27.0 atmark-dist/romfs/usr/lib/
[ATDE3 ~]$ ln -s libpng12.so.0.27.0 atmark-dist/romfs/usr/lib/libpng12.so.0

ImageMagick用の設定ファイルを追加します。以下の作業を行って下さい。

[ATDE3 ~]$ cd atmark-dist/
[ATDE3 ~/atmark-dist]$ mkdir -p romfs/usr/lib/ImageMagick-6.3.7/config/
[ATDE3 ~/atmark-dist]$ cp user/imagemagick/config/colors.xml romfs/usr/lib/ImageMagick-6.3.7/config/
[ATDE3 ~/atmark-dist]$ cp user/imagemagick/config/type.xml romfs/usr/lib/ImageMagick-6.3.7/config/

フォントに関するファイルを追加します。以下の作業を行って下さい。

[ATDE3 ~/atmark-dist]$ cd
[ATDE3 ~]$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/pool/main/f/fontconfig/fontconfig_2.6.0-3_armel.deb
[ATDE3 ~]$ dpkg -x fontconfig_2.6.0-3_armel.deb fontconfig
[ATDE3 ~]$ cp fontconfig/usr/bin/fc-cache atmark-dist/romfs/usr/bin/
[ATDE3 ~]$ mkdir -p atmark-dist/romfs/usr/share/fonts/
[ATDE3 ~]$ cp /usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf atmark-dist/romfs/usr/share/fonts/
[ATDE3 ~]$ mkdir -p atmark-dist/romfs/var/cache/fontconfig/
[ATDE3 ~]$ mkdir -p atmark-dist/romfs/etc/fonts/
[ATDE3 ~]$ echo '<fontconfig><dir>/usr/share/fonts</dir><cachedir>/var/cache/fontconfig</cachedir></fontconfig>' > atmark-dist/romfs/etc/fonts/fonts.conf

最後に、イメージファイルを生成します。

[ATDE3 ~]$ cd atmark-dist/
[ATDE3 ~/atmark-dist]$ make image

できあがったimages/romfs.img.gzで起動して下さい。

■ 動作確認
以下の様に実行できることを確認しました。

[armadillo ~]# convert -background white -fill blue -font VL-Gothic-Regular -pointsize 32 label:penlabo.net text1.png
[armadillo ~]#

御回答ありがとうございます。

手順通りにファイルを追加し起動させたところ、起動中に止まってしまいました。
ramdisk展開中に止まっていたのでおそらくramdiskの容量不足だと思われます。

この問題を解決するにはどうしたらよいでしょうか?
申し訳ありませんがよろしくお願い致します。

> 手順通りにファイルを追加し起動させたところ、起動中に止まってしまいました。
> ramdisk展開中に止まっていたのでおそらくramdiskの容量不足だと思われます。
そのとおりだと思われます。
こちらで確認した際は、ユーザーランドコンフィギュレーションはデフォルトで行っていました。
(ユーザーランドコンフィギュレーションでImageMagickは選択されていない状態です。)

convertコマンドが実行できることを確認したいので、ここでは以下を参考に
デフォルトコンフィギュレーションを設定し、
- 7.1.2. デフォルトコンフィギュレーションの適用
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…

以下を実行した後に、前回説明した手順を試して下さい。

[ATDE3 ~/atmark-dist]$ make

御回答ありがとうございます。

デフォルトコンフィギュレーションを設定した後、手順通り設定を行うことでconvertのコマンドを使うことができました。
しかし以下のコマンド

[armadillo ~]# convert -background white -fill blue -font VL-Gothic-Regular -pointsize 32 label:penlabo.net text1.png

によって作成された画像が真っ黒の状態で文字を確認することができませんでした。

原因がわからないので教えていただけないでしょうか。
よろしくお願い致します。

> 原因がわからないので教えていただけないでしょうか。
ImageMagickの設定ファイル"colors.xml"がDebianパッケージのImageMagickのバージョンと対応していないためです。

先日の作業手順では、ImageMagickの設定ファイルをAtmark Dist内のImageMagickからコピーしていたために、
DebianパッケージのImageMagickのバージョンと設定ファイルの対応がとれていない状態になっていました。

作業手順の記述ミスです。すみません。

以下の手順について、
> ImageMagick用の設定ファイルを追加します。以下の作業を行って下さい。
> [ATDE3 ~]$ cd atmark-dist/
> [ATDE3 ~/atmark-dist]$ mkdir -p romfs/usr/lib/ImageMagick-6.3.7/config/
> [ATDE3 ~/atmark-dist]$ cp user/imagemagick/config/colors.xml romfs/usr/lib/ImageMagick-6.3.7/config/
> [ATDE3 ~/atmark-dist]$ cp user/imagemagick/config/type.xml romfs/usr/lib/ImageMagick-6.3.7/config/

以下のように読み替えて、作業を行って下さい。
> ImageMagick用の設定ファイルを追加します。以下の作業を行って下さい。
> [ATDE3 ~]$ cd atmark-dist/
> [ATDE3 ~/atmark-dist]$ mkdir -p romfs/usr/lib/ImageMagick-6.3.7/config/
> [ATDE3 ~/atmark-dist]$ cp ../libmagick10/usr/lib/ImageMagick-6.3.7/config/colors.xml romfs/usr/lib/ImageMagick-6.3.7/config/
> [ATDE3 ~/atmark-dist]$ cp ../libmagick10/usr/lib/ImageMagick-6.3.7/config/type.xml romfs/usr/lib/ImageMagick-6.3.7/config/

御回答ありがとうございます。

手順通り設定を行うことでImageMagickを使えるようになりました。
ありがとうございました。

最後に最初の質問の趣旨とは若干ずれるのですが質問させてください。
今回ImageMagickとPHPの両方を使用するのが目的で、PHPの方は自力で使用できるところまで持っていくことができました。
(PHPの方もビルドしたものをromfsへ追加することで使用可能になった。)
また、今回の回答でImageMagickも使えるようになりました。

しかし、ImageMagickとPHPの両方を組み込むと起動画面で止まってしまう現象が起こりました。
それぞれ一方だけ組み込んだ場合は正常動作することは確認しました。

今回も容量不足なのでしょうか?
自分では判断がつきません。

起動したときのログを添付しますので、原因と解決方法を教えていだたけないでしょうか。
申し訳ありませんがよろしくお願い致します。

ファイル ファイルの説明
起動時log.txt armadillo起動時のログ

> RAMDISK: Loading 30023KiB [1 disk] into ram disk...

a420 で、30MBは厳しいですね。なにか不要なファイルが入っていたりしませんか?
find romfs -type f -printf "%s %p\n" | sort -n

a440なら、30MBでも大丈夫だと思います。

# 次からは、別のトピックを作ってもらえると助かります。
# 気軽に作成してください。