薄い本の校正をするには、印刷してみることが不可欠だと思うレガシーな人間です。
残念なことに、手持ちのEPSONのインクジェットプリンタには、インクを節約するモードがない。Canonやブラザーにはあるようだけど。
プリンタメーカー的には、稼ぎ頭のインクカートリッジの消費が減るモードなんて付けたくないわけだ。ユーザーのことなど、まったく考えていない利益重視の姿勢が伺える。
そこで、以下の2つのアプローチで、印刷時のインクの減りを少なくできるのではないかと考えてみた。
- モノクロ化する
- 白の網点をかぶせてインク量を減らす
経験的には、モノクロ化しても黒以外のインクも使われてしまう。でも、カラーでバリバリ使われるよりマシかな。一旦グレースケールにしてから、モノクロ二値に変換するとよさそうだ。
画像ファイルとして出力するのは、macOSではPDFをプレビューで開いて、画像として出力するとよさそうだ。
白の網点化するのは、印刷屋ではハーフトーン化という。Photoshopの機能としては、ハーフトーンスクリーンという機能があるそうだけど、そんな高価なツールは使っていない。Photoshop Elementsにはハーフトーンパターンフィルターという機能があるそうだが、高価でもないけれどPhotoshop Elementsは持っていない。
Pythonの画像処理ライブラリであるPillowに、そんな機能がったような気がしたので調べてみる。"cmyk[3].convert('1').convert('L')"とかで、黒の部分のハーフトーン化はできそうだ。
細かいパラメータを指定して、ハーフトーン化をやってくれるライブラリや短いプログラムもいろいろある。
python-halftone/halftone.py at master · philgyford/python-halftone https://github.com/philgyford/python-halftone/blob/master/halftone.py
philgyford/python-halftone: A python module that uses PIL/Pillow to give images a halftone effect https://github.com/philgyford/python-halftone
instakit · PyPI https://pypi.org/project/instakit/
プログラムで一括処理できるのは便利なのだが、内部でやっているのはディザリング処理だけの感じ。処理結果を見ながら加減できるツールのほうがよさそう。プリセットのディザリングパターン適用がイマイチで、見やすい結果にするには、だいぶパラメータ調整が必要そうだ。
モノクロでディザリング処理するだけであれば、画像加工の定番ツールであるToyViewerを使ってみる。減色メニューから、使えそうなフィルタを試す。
- オリジナル

- ビット切り捨て-1ビット

- ビット切り捨て-2ビット

- 擬似階調-誤差拡散-色数8

- 固定パレット+誤差拡散-色数8

ちょっと読みにくいけど、インクの節約には、1ビット化がよさそうな感じだ。あとは、線数に応じて、どのくらい他の色を使うようにするかは、プリンタドライバの中の話になるのでいじりようがない。
- 輝度・モノクロ-モノクロ化

1ビット化よりは、ちょっと読みやすそう。写真もきれいにディザリング化されている。これが良さそう。
ToyViewerでは、Multi-Page Controllerという機能があるのだけど、残念ながらスライドショウ機能のみで、これでフィルタ適用の一括処理はできないようだ。

ちょっと面倒だが、AppleScriptで処理しようかと思ったのだけど、ToyViewerはすクリプタブルなアプリケーションではなかった。うむむ、手作業で変換と保存を繰り返すしかないのか...
AutomatorでQuartsフィルタを適用できるそうなので使ってみる。 Automatorを起動して、イメージキャプチャ・プラグインを選択する。


変換対象ファイルをドロップする。

フィルタを選んで、下にドロップする。

警告が表示された。 原本を残して、コピーで作業することにする。追加ボタンを押す。

白黒フィルタを選ぶ。

右上の実行を選ぶと、上から順に実行される。

警告が表示された。一回だけなので気にしない。

順に実行されて、一番下に「ワークフローが完了しました」と出れば終わり。

残念ながら、最初のページにしか適用されていなかった...
バラバラの画像ファイルであれば使えそうだが...
PDFを対象にしたら、ページ全部を処理できるのではないかと思ったが、吐かせてみてもダメだった。色付きの二値化されていないデータが出ただけだった。
プレビューの書き出し機能を使って二値化するときにも、Quartsフィルタが設定できるのに気がついた。

しかし、このフィルタではちゃんと二値化はされていないようで、使えないことがわかった。サイズは小さくなっているのだが、画像だけが二値処理されるような感じなのだろうか。しかし、画像のほうも減色処理がおかしいものになっていた。
もうしょうがないので、ToyViewerで一枚づつ書き出してしまって、PDFにまとめた。
これを印刷したら、インクの節約になるのだろうけど、労力が半端ない。失敗だ。
やっぱりPythonでやったほうがよかったか?
結局、インクを節約するには、プレビューアプリのプリンタ設定をうまくやって、大きめの用紙に多面付けで縮小印刷するのが一番簡単か...

しょうもない結論に終わった。
オリジナル投稿: プリント時インクジェットのインクを節約する|kinneko|pixivFANBOX
https://www.fanbox.cc/@kinneko/posts/645656



