KeyFansClub

首页 » - 特色讨论区 - » 键社茶餐厅 » 【伪】技术貼,badapple命令行版的制作……
uil - 2010/2/11 21:00:00
为了反映档中央的号召,实现发又好又有质量的帖子,于是我就发了(PAI

好吧,其实这是我寂寞才发的……大家寂寞的围观把……
-----------------------------------------------------------------------------------------------------------------------------
首先,准备一个bad apple的干净清晰版。可以原版flash好,不过avi阿mp4阿更好,最好不要用flv或字幕版,会有影响的~找到后使用:
mplayer -ss 0 -noframedrop -nosound -vo jpeg -frames 8000  out.avi
来把它分解为图片。out.avi为bad apple的视频,8000为视频的帧[url=123]数,不过视[/url]频实际上只有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……如果我学操作系统和汇编顺利地话……现在已经能打印字符了,应该也不会晚……

继续下潜……
xiongrentmp - 2010/2/11 21:11:00
某无知群众表示这帖子的质量好过头了.....理解不能...=3=
唯一能理解的就是,我觉得坏苹果不是很好听.....
emiya - 2010/2/11 21:18:00
Bad Apple...
是那個東方的麼?= =
我只覺得那些剪影很漂亮...:miffy2: (拖
木鱼 - 2010/2/11 21:44:00
我认为可以开一块技术板块。
像楼主这类技术宅就应该抓进去当苦力。。。
理解不能。
尤其看到那句。。。
代码很简单。(泪奔
adam200233 - 2010/2/11 21:58:00
話說你搞這個我看不懂阿?
(這是做什麼用的阿?)
Prz - 2010/2/11 22:20:00
Linux下面不是有一个播放器可以把console作为render surface么...
uil - 2010/2/11 22:24:00
我知道,不过晚了……

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

话说把你老炸出来了……
水羊 - 2010/2/11 23:50:00
我記的之前Louter的小魔獸也有做過 bad  apple
那種剪影技巧實在太棒了
不過,LZ做出來的紅白已經肥了 = =||||
1
查看完整版本: 【伪】技术貼,badapple命令行版的制作……