プリント時インクジェットのインクを節約する

 薄い本の校正をするには、印刷してみることが不可欠だと思うレガシーな人間です。

 残念なことに、手持ちの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