一篇放在草稿箱里一年多的博文。

话说到,去年在上海财经大学讲《R与统计图形》时,提到了Edward Muybridge (1830-1904)的赛马动画。在准备材料的时候,我也比较八卦的翻了翻关于赛马动画的历史,结果发现:这幅图型不但是统计动画的鼻祖,同样是现代电影的先驱。

从 Edward Muybride 拍摄赛马动画后,美国的电影产业开始高速的发展,从此加利福尼亚州顺理成章地成为人类电影发展上的重镇,加州的好莱坞产生了大量的电影技术的创新,好莱坞电影也成为美国文化的主要代表之一。

电影、动画的原理,我就不八卦了,一般理科生大概都有些了解。关于这个赛马动画的产生,很有意思:

1872年,前美国加州州长 Leland Stanford(也是斯坦福大学的创立者)是一个狂热的赛马爱好者,为了证明马在奔跑的时候会有一刻所有的蹄子同时悬空,和人打赌,赌金非常高,达到了$25,000(估计折合到现在应该有几百万美元吧)。而在那个年代很难用肉眼确定马在奔跑时的状态(可以想象一下为什么“马踏飞燕”是那个样子?)于是Stanford找到并雇佣Muybridge这个摄影家帮他解决这个问题。

Muybridge 本来在 1872 年的时候已经接受了 Stanford 的邀请,为 Stanford 提供那旷世赌博的摄像证据。但这家伙怀疑自己老婆有个情人(Larkyns),并且冲动的枪杀了Larkyns(和张灵甫有的一拼)。一直到1877年,Muybridge 被判无罪(Stanford提供的辩护资助),才又继续他的奔马实验,于是有了这个:

后来Muybridge根据这些赛马的图片,创作了人类历史上的第一个小电影。那,下面这个动画就是用最上面的几张图合并而成的(因为偷懒用ImageMagick自动切割,所以这个小电影有点晃~~)

当然,还有一个效果更好的:

哈,这便是统计动画~~

 

声明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……,

setwd("D:/漫画/Naruto04")
dd <- dir()
ff <- function(x){
    convert <- paste("convert " , x ,
                     " -crop 2x1@ +repage +adjoin ",
                     "%d_",substr(x,1,3),".jpg",sep = '')
    shell(convert)
    reverse0 <- paste("convert " , "0_", x ,
                      " ", substr(x,1,3), "_1.jpg", sep = '')
    reverse1 <- 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没有辐射,和一般的纸质书区别不大,但看多了仍然有损视力 ^_^

© 2012 刘思喆 @ 贝吉塔行星 Suffusion theme by Sayontan Sinha