Kindle 版のマンガをほどよく簡単に JPEG に変換する方法

Kindle Cloud Reader が使えるようになってからやたらと Kindle でマンガを購入するようになりました。

それまで 2年間で 25冊しか購入していなかったのが、Kindle Cloud Reader を使い始めてから 1カ月半で 27冊を購入。裁断して ScanSnap で読み込んでとか、もうやってられませんわ…。

でもやっぱり Leeyes で読みたい!(操作に慣れてるし部分拡大が出来るし)…ということで、Kindle Cloud Reader から JPEG に変換して ZIP で固める方法です。

目次

作業の流れ

ざっくり以下のような感じで。

  • Full HD のモニターに Kindle Cloud Reader を全画面表示。
  • UWSC を使って GreenShot で全ページをキャプチャ。
  • 表紙ページと奥付ページのキャプチャファイルを a.png と b.png にリネーム。
  • 画像切り出し用コマンドを実行(要・Cygwin + ImageMagick
  • キャプチャ画像を全部削除。
  • 変換したファイルを ZIP で固める。

切り出す画像サイズの概念図

ざっくりこんな感じ。

Kindle Cloud Reader でダウンロードして保存

ページ繰りの時間を短くして UWSC での自動処理を円滑にするために、Kindle Cloud Reader で「本をダウンロードして保存」を実行しておきます。

ついでに UWSC のスクリプトに入力するためにページ数を覚えておきます。UWSC には「ページ数÷2」を入力します。ページ数が奇数の場合は +1 した数。

ダウンロードが終わったら Full HD のモニターに表紙を表示。Kindle コミックは表紙が 2枚あることがほとんどなので 2枚目の表紙を表示しておきます。

UWSC のスクリプト

ざっくり以下のような感じ。手抜き。

//
// Kindle Cloud Reader の画面キャプチャ自動化
//
// Full HD 表示
//

// 変数の宣言を強制
Option Explicit

Dim countCap
Dim i

// キャプチャする回数を入力
countCap = INPUT("キャプチャする回数を入力", 120)

IFB VARTYPE(countCap) = VAR_EMPTY
 PRINT "キャンセルされました"
ELSEIF VAL(countCap) = ERR_VALUE
 PRINT "無効な値です"
ELSE
 // クリックしてアクティブウィンドウを切替
 // このへんの座標は環境に合わせて調整
 BTN(LEFT,CLICK,2257,389,200)
 // 入力された回数だけループ
 FOR i = 1 TO countCap
 // 画面キャプチャ Alt+PrtSc
 // このへんは GreenShot の設定に合わせて変更
 KBD(VK_RALT,DOWN,100)
 KBD(VK_SNAPSHOT,CLICK,100)
 KBD(VK_RALT,UP,100)
 // 0.3秒待つ
 Sleep(0.3)
 // 次ページへ移動
 // このへんの座標は環境に合わせて調整
 BTN(LEFT,CLICK,1657,389,200)
 // ページ移動用の左右矢印を消す
 // このへんの座標は環境に合わせて調整
 MMV(1743,320,100)
 BTN(LEFT,CLICK,1743,320,100)
 // 0.5秒待つ
 Sleep(0.3)
 NEXT
ENDIF

キャプチャ保存ディレクトリを開いて、表紙を a.png、奥付を b.png にリネーム。奥付がない場合は真っ白な 1920×1080ピクセルの PNG ファイルを b.png として用意します。

画像切り出し

画像切り出し用スクリプトは以下。

#!/bin/bash

# Kindle Cloud Reader の Full HD キャプチャー画像を切り出す
# a.png(表紙)、b.png(奥付)

# リネーム後ファイル名のプレフィックス指定が必要
if [ $# -ne 1 ]; then
  exit 1
fi

# リネーム後ファイル名のプレフィックス
prefix=$1"_";

# 表紙
if [ -e a.png ]; then
    convert -crop 736x1080+592+0 a.png "$prefix"000_1.png
fi
# 奥付
if [ -e b.png ]; then
    convert -crop 736x1080+592+0 b.png "$prefix"000_2.png
fi

# カウンタ用整数
declare -i cnt
# カウンタ初期化
cnt=1

for i in 2*Reader.png
do
    # 右ページ
    convert -crop 736x1080+960+0 "$i" $prefix`printf "%03d" $cnt`.png
    cnt=$cnt+1
    # 左ページ
    convert -crop 736x1080+224+0 "$i" $prefix`printf "%03d" $cnt`.png
    cnt=$cnt+1
done

上記を例えば kindlecrop というファイル名で保存して、以下のように実行。

$ kindlecrop locke_nirvana_01

引数が変換後の画像ファイル名プレフィックスになります。あとは ZIP で固めて終わり。

いやー、マンガ読むのが捗るわー。

スポンサーリンク
レクタングル(大)
レクタングル(大)

フォローする