ImageMagickでEPSに変換したファイルをIllustrator CS5で開くとフリーズする問題

ImageMagickのconvertコマンドでJPEG形式の画像ファイルををEPSファイルに変換したものを、Illustrator(イラストレータ) CS5で開くと、CS5が固まる問題を調査しました。
この現象を確認したのは、CentOS上で変換したJEPGファイルです。
昔はこんなことは無かった気がしますが、いつの間にかこの問題が発生していたので調査しました。

開発環境:
Windows7(64bit)
mageMagick 6.8.3-0 2013-02-13 Q16
Illustrator CS5

本番環境:
CentOS Linux 5.11
ImageMagick 6.2.8 05/07/12 Q16

CentOS上のImageMagickでJPEGファイルをEPSファイルにconvertしたものをイラレCS5で開くとイラレが固まって強制終了するしかなくなります。
単純に変換するときのコマンドです。
convert a.jpg a.eps

環境それぞれで生成されたEPSファイルを比較しました。
本番環境で生成したファイルにはヘッダ情報に

%begin_xml_code
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:A379835BBF2068118A6DF5258C3E39CC" xmpMM:DocumentID="xmp.did:660D7D5C2F0F11E3A9DB9D247D1C6687" xmpMM:InstanceID="xmp.iid:660D7D5B2F0F11E3A9DB9D247D1C6687" xmp:CreatorTool="Adobe Photoshop CS5.1 Macintosh"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:A56F4D9AC92068118A6DF5258C3E39CC" stRef:documentID="xmp.did:A379835BBF2068118A6DF5258C3E39CC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
%end_xml_code

というものが追加されていました。
MACのフォトショCS5.1で保存されたとの記載を確認できます。
簡単に言うとファイル情報ですね。
これを削除するとイラレは固まらずにファイルを開けます。
よ~くソースを見ると、
「%begin_xml_code」と「%end_xml_code」に挟まれた行、XMLで言うところの「<?xpacket />」がベタで書かれていました。
この行、ソースとしてはベタで書かれていてちょっと引っかかったので、行をコメントアウト、つまり先頭に「%」を追加すると、イラレで固まらなくなりました。

XMLをPostScriptにベタで書いているので構文エラーで固まっていたようです。
PostScriptにはヒアドキュメントはなかった気がするので、stremaとしてデータとして埋め込むか、1行ずつコメントアウトしてやらないとだめなのでしょう。

XML情報は特に必要がないので、除去するオプション「-strip」を追加してconvertしてみます。
convert a.jpg -strip a.eps
これでファイル情報が格納されなくなり、イラレで無事開けるようになりました。

ファイル情報が埋め込まれるかどうかはコンパイル時のスイッチ設定だとは思うのですが、そこまでガッツリ調べるのが面倒なので、回避方法を確認したところで良しとします。

でめたしでめたし。

WindowsのInkscapeでメニューのフォントがダサいのを直す

WindowsのInkscapeでメニューのフォントがダサくなっています。
バージョンが0.48になってからでしょうか、結構前からこのままですね。
気にはしてなかったのですが、Inkscapeというワードでそれなりに調べている人がいたようなので、記事に残しておきます。
試したInkscapeのバージョンは0.48.2です。
0.48.3以降には数値を入力できなくなる致命的なバグがあるので使っていません。

これが標準の状態
Inkscapeウィンドウ初期フォント

フォント参照設定ファイルがあるので
「Inkscape\etc\pango\pango.aliases」
を開いて、おそらく4行目にある「sans」に「meiryo,」を追加
再起動するとフォントが変更されています。
sans = "meiryo,arial,browallia new,mingliu,simhei,gulimche,ms gothic,kartika,latha,mangal,raavi"

Inkscapeウィンドウ変更フォント
これで完了。

他の設定方法もあるみたいですが、この方法でダメなら探して試してみてください。
自分の環境では、1つのファイルの変更のみで対応できました。

ImageMagickで画像の情報を得る

画像のいろんな情報を得るには、
identify -verbose
とするわけですが、
解像度を取得しようとコードを書いていたところ、ちょっとおかしな個所を見つけたので調べてみました。

まず、解像度は
「Resolution」
で取得できます。
最初はこれだけ見ていたのですが、実際のものと違うことがあったので悩んでいました。

よくみると
「Units」
という項目があり、これで単位を指定していることが判明。
通常は
「PixelsPerInch」
インチを基準にしていてDPIやPPIと言われるもので、
これであればResolutionはそのままDPIとなります。

次に
「PixelsPerCentimeter」
これが曲者でした。
インチとセンチを換算する必要があります。
1cm = 1inch / 2.54
なので、
[pixel/inch] = [pixel/cm] * 2.54
というわけです。

ちなみに
「Undefined」
はどういうものかよくわかりませんが、Resolutionは100が多いようです。

ネット印刷受注システムPOASにPSD入稿を実装

ネット印刷受注システムPOASで、PhotoshopのPSD形式に対応しました。
拡張機能となりますので、別途契約が必要になります。
現在使える状態になっていますが、近いうちに判定機能を追加します。

機能の概要としては、
レイヤを合成して画像化します。
解像度を調べて仕上サイズを推測します。
PSDファイルのまま入稿できます。

プリントライで問い合わせがあったので、先送りにしていた機能を前倒しで導入しました。

GhostScriptでPDFを画像化する際にジャギーが目立つ

GhostScriptでPostScript系のデータを画像化できるわけですが、
「-dTextAlphaBits=4」
というおまじないが効かないことがあるようです。
アンチエイリアスを設定できることになっているのですが、PDFには効かないようです。
EPSは有効です。

PDFで設定が効かないのであれば、4倍大きいサイズで画像化してからアンチエイリアスを有効にして1/4にリサイズを行うことで対応できますが、
A4サイズ程度のデータになると、かなりのマシンパワーが必要になるため現実的ではありません。
他に何らかのオプションがあるのかどうか、また気が向いたら調べてみます。

Paint.NET4のGPU設定でクラッシュ

Paint.NETのバージョン4が、去る6月24日にリリースされていました。
バージョン4からGPUアクセラレーション機能が実装されましたが、環境によってはクラッシュして起動できなくなる可能性があります。

当店の環境(Windows7 64bit)でもクラッシュしましたが、次の方法で復旧できます。 レジストリエディタを起動します。 キー名「HKEY_CURRENT_USER\Software\Paint.NET」にアクセスし、項目名「UI/EnableHardwareAcceleration」の値を「False」に変更します。 これでGPUアクセラレーションのチェックを外せますので、起動時のクラッシュを回避できるようになります。

ImageMagickの動作が重いオプション

開発環境のWindows7上では全く問題にならなかった、dissolveオプション。
明るさを調整したかったものの、brightness-contrastがバージョンの都合で使えず、modulateはコントラストだったので、白い画像を作成してdissolveで透明度を指定して合成するように調整してみた。
開発機では問題がなく、いざVPSに上げると動作が遅い、というか重い。
これは使えたもんじゃない。
まだmodulateの方がまし。
この感じだと、むりにOSのバージョン上げてImageMagickを上げても動作が遅い可能性もあるわけで、どうしたものか。
処理によってPHPとPerlが走って、結果は同じにならないと困るので、言語ごとにチューンされてるGDも少し危険な感じ。

困った困った。

LibreOffice 3.5.1を導入してみた

先日、2012年3月15日にリリースされたLibreOffice3.5.1を導入しました。
ちなみに、3.4系のマイナーバージョン3.4.6も先日20120年03月22日にリリースされていますが、ノータッチです。

さて、例によって使用上の大きな変化はないのですが、画面の描画に若干の修正を確認できました。グループボックスのラインが常に前面になっていたのが、設定どおりの順番で描画されるようになっています。
大した変化ではないですが、ちょっとだけスッキリしました。
これ以外の変化は特に感じられません。
毎回書いてますが、Baseのタブ切り替え機能を実装してほしいです。

Inkscape 0.48.3 リリース

フリーのドローソフト、Inkscapeが2012年02月15日にマイナーアップデートしました。
バージョンは0.48.3になりました。
Inkscapeの公式サイトには、記事投稿時点では反映されていません。
また、Windows用のインストーラ版もまだのようです。
最新版の入手はsourceforgeのInkscapeダウンロードページにて。