独自のPDFのQuartsフィルタを追加する
以前の日記「約1/30でも割と見られるPDFに圧縮しておく」でも試した、プレビュー.app >> ファイル >> 書き出し... のPDFのQuartsフィルタ:Reduce File Size。
ファイルの圧縮率は抜群なんだけど、細かい文字などは潰れてしまって判読不能。その時は使い物にならないと思って、諦めていた。
Reduce File Size | ![]() |
59KB |
---|---|---|
元画像 | ![]() |
4.5MB |
ところが、最近このPDFのQuartsフィルタを自分好みに変更する方法を知った!
PDFのQuartsフィルタの在処
- システムが定義するすべてのQuartsフィルタは、以下のファイルパスに存在する。
$ ls -l /System/Library/Filters
total 224
−rw-r--r-- 1 root wheel 37563 9 19 17:47 Black & White.qfilter
−rw-r--r-- 1 root wheel 44455 9 19 17:47 Blue Tone.qfilter
−rw-r--r-- 1 root wheel 79369 9 19 17:47 Create Generic PDFX-3 Document.qfilter
−rw-r--r-- 1 root wheel 44475 9 19 17:47 Gray Tone.qfilter
−rw-r--r-- 1 root wheel 4772 9 19 17:47 Lightness Decrease.qfilter
−rw-r--r-- 1 root wheel 4736 9 19 17:47 Lightness Increase.qfilter
−rw-r--r-- 1 root wheel 1133 9 19 17:47 Reduce File Size.qfilter
−rw-r--r-- 1 root wheel 44480 9 19 17:47 Sepia Tone.qfilter
- /System/Library/Filtersフォルダ内のファイル名がそのままQuartzフィルタとして表示されているのだ。
Quartzフィルタの内容
- /System/Library/Filters/Reduce File Size.qfilterの内容を見てみると、以下のようなxmlファイルであった。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Domains</key> <dict> <key>Applications</key> <true/> <key>Printing</key> <true/> </dict> <key>FilterData</key> <dict> <key>ColorSettings</key> <dict> <key>DocumentColorSettings</key> <dict> <key>CustomLHSCorrection</key> <array> <integer>8</integer> <integer>8</integer> <integer>8</integer> </array> </dict> <key>ImageSettings</key> <dict> <key>Compression Quality</key> <real>0.0</real> <key>ImageCompression</key> <string>ImageJPEGCompress</string> <key>ImageScaleSettings</key> <dict> <key>ImageScaleFactor</key> <real>0.5</real> <key>ImageScaleInterpolate</key> <true/> <key>ImageSizeMax</key> <integer>512</integer> <key>ImageSizeMin</key> <integer>128</integer> </dict> </dict> </dict> </dict> <key>FilterType</key> <integer>1</integer> <key>Name</key> <string>Reduce File Size</string> </dict> </plist>
- 注目すべきは、中段
ImageSettings 以降の部分。 - 画像ファイルの品質を決定するであろう、いくつかの設定キーと値が見える。
0.0 | |
0.5 | |
512 |
独自のQuartzフィルタを作る
- 上記のQuartsフィルタの定義ファイルをコピーして、以下のように修正してみた。
0.0 | JPEGの画像品質。-1から+1の範囲。-1が最低、+1が最高、0は中間。 品質が低くなるほど、ブロックノイズが増えるが、ファイルサイズは小さくなる。 |
|
1.0 | 以下のイメージサイズに対する倍率(0〜1)と思われる。1.0なら3508、0.5なら1754と解釈されるのだと思う。 | |
3508 | PDFに保存する画像の最大サイズを指定する。 | |
Reduce File Size (customize) | この値がQuartzフィルタの項目として表示される。ファイル名が表示されるのではない。 |
- そして、/Library/Filters/Reduce File Size (customize).qfilter として保存するのだ。
- /Library/Filters/ は存在しなかったので、自分で追加した。
- すると、Quartzフィルタに追加したReduce File Size (customize)が現れるのである。
ColorSyncユーティリティで編集する
設定方法を探る
イメージのサンプリング >> ピクセルで指定する
- なぜ「イメージのサンプリング」の「最大:3508ピクセル」にしたかと言えば...
- A4サイズの長辺の長さ297mm。(自分の環境では、ほとんどのPDFがA4サイズ以下なので)
- インチサイズに変換して、297÷25.4=11.69291338582677インチ。
- Retinaディスプレイの由来から300dpiの解像度があれば十分なので、11.69291338582677×300=3507.874015748031≒3508ピクセル。
- 以上の計算から、サイズ調整:100%、最大:3508ピクセルに設定しておけば、A4サイズまでの環境なら300dpiがキープできることになるのだ。
イメージのサンプリング >> 解像度で指定する
- 気になる項目は「解像度」である。これを設定すると、xmlキーは「ImageResolution」となる。
- 元の Reduse File Size の設定にはない項目である。(上記のピクセル指定で設定されているので)
- いろいろ試してみると、実は300dpiの解像度が欲しいのであれば、「解像度:300ピクセル/インチ」と指定するだけでOKだった。
- 但し、解像度を指定する場合は、その他の項目はすべて0にしておく必要がある。(0にすると空欄となる)
- ピクセル指定のような面倒な計算は不要だったのである。
イメージの圧縮 >> 品質
- JPEG品質によって、ファイルサイズと画像品質にどのような影響があるか調べてみた。
品質 | サイズ | 画像 |
---|---|---|
元画像 | 32.6MB | 目視でJPEG品質+1と同じ |
+1(最大) | 21.6MB(元画像の2/3) | ![]() |
0 | 2.2MB(元画像の1/15) | ![]() |
-0.2 | 1.6MB(元画像の1/20) | 目視でJPEG品質0と同じ |
-1(最小) | 900KB(元画像の1/36) | ![]() |
- 元画像とJPEG品質+1(最大)の差は、目視では判別できないレベルだった。(容量の無駄なので元画像はなし)
- JPEG品質0は、目視でブロックノイズが若干確認できるのだが、拡大しないと気付かないレベル。
- このページでは1/2縮小表示しているので、ほとんど気付けないレベルになってしまっている。(クリックして原画を見ると若干のブロックノイズあり)
- JPEG品質-0.2は、JPEG品質0とほとんど同じ。
- JPEG品質-1は、ブロックノイズが明確に確認できる。
- 但し、画像の美しさを追求しなければ、この品質でも十分かもしれない。
- 解像度は300dpiあるので、小さな文字でもちゃんと判読できる。
以上の結果から...
- 解像度は300dpi。(Retina環境を考慮して)
イメージのサンプリング >> 品質について
- この項目のxmlのキーは、ImageScaleInterpolate(イメージ補完?)となっている。
- システムデフォルトの設定では、
・ となっているのだけど、 - ColorSyncユーティリティでは、高・中・低を選択して、
1・2・3 が書き込まれる。 - 果たしてどちらの設定が正しいのか不明だが、どのような値を設定しても画像サイズ・品質とも違いはなかった。
- (別の特定の条件で何らかの影響を与えるのかもしれないが)