KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

【伪】技术貼,badapple命令行版的制作……

[ 8322 查看 / 7 回复 ]

为了反映档中央的号召,实现发又好又有质量的帖子,于是我就发了(PAI

好吧,其实这是我寂寞才发的……大家寂寞的围观把……
-----------------------------------------------------------------------------------------------------------------------------
首先,准备一个bad apple的干净清晰版。可以原版flash好,不过avi阿mp4阿更好,最好不要用flv或字幕版,会有影响的~找到后使用:
mplayer -ss 0 -noframedrop -nosound -vo jpeg -frames 8000  out.avi
来把它分解为图片。out.avi为bad apple的视频,8000为视频的帧数,不过视频实际上只有6569帧,设置大了没关系,到了它会自动停止的。
搞掂后生成6569个jpeg图片,一共65MB:


这里为了方便,就不考虑图片的边界问题(边界可是个大工程……),直接把这些图片转成黑白两色,方便处理:
find ./-name '*.jpg' -exec convert {} -resize 80x60 -colors 2 {} \;
这里先转换成80x60的图片(突然想到,为什么不在mplayer那里设置图片大小……杯具……),方便表现。
注意这里路径问题,千万不要在家目录或根目录运行,不然会杯具的……转换完后就可以开始分析图片了。
代码用python实现:
# -*- coding: utf-8 -*-
#!/usr/bin/python

import Image,os
path = './%08.0d.bmp'


data = open("/./data",'bw')

for m in xrange(6569):
    print(path % m)
    try:
        f = open(path % m)
    except :
        continue
    img = Image.open(f)

    h = img.size[0]
    w = img.size[1]

    for y in range(w):
        for x in range(h):
            data.write('  '  if img.getpixel((x,y)) else '■■')
        data.write("\n")
    data.write("\n")
    data.flush()
           
data.close()

        代码很简单,不过托python的强大,很快写完,虽然速度有点慢……而且处理出来的数据比较大……30mb……不过也懒得优化了……
之前用c写bmp的分析程序写道崩溃……英文不行阿……

认得出这是谁吗……

至于命令行的播放代码……这里是在拿不出手……闪屏太厉害了……而且看见网上已经有n个实现了……更是懒得再弄了……(逃
-------------------------------------------------------------------------------------------------------------------------------------------------------------
all in all,这是潜水多日后久违的上浮,当时新春贺礼把……虽然有点拿不出手……
后续更新会在我blog那里有……如果有空的话……

下一步目标是光盘启动版的badapple……如果我学操作系统和汇编顺利地话……现在已经能打印字符了,应该也不会晚……

继续下潜……
最后编辑uil 最后编辑于 2010-02-11 21:05:27
1

评分次数

    分享 转发
    TOP

    回复 6F Prz 的帖子

    我知道,不过晚了……

    所以后来没什么动力搞……

    话说把你老炸出来了……

    TOP