R 之不务正业 - 批处理漫画

声明 1:估计这篇博文的受众会很少很少……

声明 2:请将下载的漫画于 24 小时内删除,balabala……

话说到,为了保护我已经不太好的视力,前几天购置了一台 Kindle DX,用来阅读电脑上大量存在电脑中的的 pdf 格式电子书。这个东东确实比较强悍,除了对这些 pdf 文字书籍支持比较不错外(当然有些书籍需要进行一些处理),对 pdf 格式的漫画支持更赞。

而我是一个彻底的漫粉,闲暇之余,从网上下载 jpg 格式的漫画(推荐下载工具 ComicAiII),悠然自得看漫画,实在惬意的很~~

不过,有些下载的漫画有些问题,比如下面的这种的:

如果直接合并为 pdf 在 Kindle DX 上阅读,纵向显示的话,上下各有很大一块白边,画面非常小;

如果横向显示,效果更差,底部有一部分不能显示。想看完两页漫画的话,需要向上下翻页反复操作:

琢磨来琢磨去,还是得手动把漫画裁剪为适合 Kindle 阅读的大小(Kindle DX 的标准 9 英寸屏显示区域和 32 开纸大小接近),并且把裁剪后的漫画顺序调换(日本漫画的阅读习惯是从左向右)。

说白了需要对每页 jpg 漫画做两件事:
  • 从中间分割,将一张 jpg 图片变为两张;
  • 为左右两张子图的增加顺序标记。

如果将分割的两张图片,右边图增加_0,左边图增加_1,即可满足要求。拿上面的 086.jpg 举例:170 页(即右边部分)会被命名为 086_0.jpg,171 页会被命名为 086_1.jpg,由于有了 0、1 标记,这样所有更新过的 jpg 合并为 pdf 文件的话,即可保证顺序的正确。

这一过程使用 ImageMagickR 来实现 (Windows XP 平台):

假如你的火影忍者的目录为 D:/ 漫画 / Naruto04,文件为 001.jpg、002.jpg……,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
setwd("D:/漫画/Naruto04")
dd <- dir()
ff <- function(x){
convert &lt;- paste("convert " , x ,
" -crop 2x1@ +repage +adjoin ",
"%d_",substr(x,1,3),".jpg",sep = '')
shell(convert)
reverse0 &lt;- paste("convert " , "0_", x ,
" ", substr(x,1,3), "_1.jpg", sep = '')
reverse1 &lt;- paste("convert " , "1_", x ,
" ", substr(x,1,3), "_0.jpg", sep = '')
shell(reverse0)
shell(reverse1)
shell(paste("del " ,"0_", x , sep = ''))
shell(paste("del " ,"1_", x , sep = ''))
shell(paste("del " , x , sep = ''))
}

for (j in dd) ff(j)
shell(paste('convert *.jpg ', '1.pdf',sep = ''))

注意:目标文件夹的所有文件将被替换!

最后要强调的是,虽然 Kindle 没有辐射,和一般的纸质书区别不大,但看多了仍然有损视力 ^_^