1月 03

GhostScriptでPDFをPNGに透過で書き出す際のおかしな挙動

名刺[55x91mm]に塗り足し3mmとトンボ9mmを追加したデータ[79x115mm]をTCPDFで作製し、それを画像化していたのですが、一定の解像度(400dpi)を超えると透過に失敗することが判明しました。
350と600で書き出したかったのですが、設計し直しですかね…

となみにスクリプトはPHPで、こんな感じ。

$command = sprintf("%s -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop -r%d -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=%s %s",
(isset($_SERVER['WINDIR']) ? 'gswin32c' : 'gs'),
$dpi,
$to,
$from
);

1月 02

ImageMagickで解像度の指定がうまく行かない

PDF形式のファイルをPNG形式に変換するには、GhostScriptを使って変換しているわけですが、解像度が微妙な数値になるのが気になっていました。
例えば、350dpiを指定しても、実際には349.987dpiになるという具合です。
内部ではinchで格納しているデータをmmに変換する際の誤差なので大きな問題ではないのですが、見た目麗しくないので何とかならないのかと。

そうだ、ImageMagickで解像度の設定を更新すれば対応できるはずだということで検索。

http://aligach.net/diary/20091019.html によると
convert INFILE -size SRC_SIZE -scale TARGET_SIZE -density 350x350 \
-units PixelsPerInch OUTFILE

ということらしいけど、実際にやると「px/inch」ではなく「px/cm」になってしまう。

http://www.imagemagick.org/script/command-line-options.php#density
http://www.imagemagick.org/script/command-line-options.php#units
などによれば、

「-density」で解像度の数値と、「-units」で「PixelsPerInch」を同時に指定すればOKとあるものの、やはりだめ。

別の関数でやってみればと、
mogrify -density 350 -units PixelsPerCentimeter imagepath
でも、やはりだめ。

ちなみに、Windows上での話でバージョンは次の通り
ImageMagick 6.8.3-0 2013-02-13 Q16
環境によっては違うのかも?

10月 03

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

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

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

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

10月 02

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

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

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