自炊
JPG形式の記事 と基本的には同じである。 違いは物理サイズ指定の単位が JPGではDPI (dots per inch) であるのに対して、PNGではPPM (pixels per meter) であること、チャンク(セグメント)ごとにCRC-32の巡回冗長検査があるのでそれを書き換える必要があるこ…
以下、JPG形式の画像ファイルの物理サイズをA4サイズの横幅にするコード。 PNG形式の記事も参照 def parse_jpg(file_path): with open(file_path, 'rb') as f: data = f.read() i = 0 segments = {} while i < len(data): assert(data[i] == 0xff) marker = …
データ部分を一切書き換えることなく、DPIを書き換えたい場合は、 PNG形式の画像ファイルのDPIを書き換えると、 JPG形式の画像ファイルのDPIを書き換える を使って欲しい。 以下、はデータ部分の書き換えが発生するシンプルなコード from PIL import Image f…
元々2値のPNG画像を無理やりJPG画像にすると、アナログノイズ的に輝度値が揺らいでしまう。 また、JPG画像の方が画像サイズが増えてしまうこともある。 JPG画像にしても輝度値は大きく変わらないので、閾値127で2値画像を作り、PNG形式で保存する関数を作っ…
画像からPDFにするためのパッケージ img2pdf が必要。 数字を自然順にソートするためのパッケージと関数 natsort natsorted が必要。 PNGファイルに透過チャンネルがある場合、 img2pdf.AlphaChannelError: Refusing to work on images with alpha channel …
OpenCVでいうところのRectをやるには、配列の一部をスライスすればよい。 dst1 はY=164からHeight=2960、X=356からWidth=2028ピクセル分。XとYが逆になってることに注意。 import cv2 import glob files = glob.glob("*.jpg") i=0 for file in files: im = c…
pypi.org が便利だった。 pip install EbookLib でインストール カバーebooklib.ITEM_COVERと、画像ebooklib.ITEM_IMAGEをそれぞれ開き、バイナリ形式で出力する。 import ebooklib from ebooklib import epub import os book = epub.read_epub('filename.ep…