vio-lin
字符版badapple 源代码

[media=x,500,375]http://v.youku.com/v_show/id_XMjkyNzM1NjA4.html[/media]

偶然找到的 我也不怎么明白 放上来 大家研究研究

程序分两个部分 转化为字符 和打印字符

转化部分

/**************************************************************

** 程序名称:图片2字符图片

** 程序功能:图片根据灰度转换为ASCII字符图片

** 编译环境:VC++6.0 EGE 12.06

** 作者信息:Geodesic <Geodesicwl-cpro@yahoo.cn>

** 最后修改:2012-07-19

**************************************************************/

#include <graphics.h>

#include <stdio.h>

/*

* Ascii字符和灰度

* */

const struct AsciiPix

{

char ascii[32];

int gray[32];

}ascpix = {' ','`','.','^',',',':','~','"','<','!','c','t','+','{','i','7','?',

'u','3','0','p','w','4','A','8','D','X','%','#','H','W','M',

70,68,66,63,61,59,55,53,51,49,47,45,43,41,39,37,35,33,31,29,27,25,23,21,19,17,15,13,9,7,5,0};

/*

* 搜寻灰度gray的替代字符

* gray待替换的灰度

* ascpix用于替换字符和对应灰度结构体

* */

static SearchAsc(struct AsciiPix ascpix, int gray)

{

int loop;

loop = 0;

while(gray < ascpix.gray[loop] && loop < 32 - 1)

loop++;

return ascpix.ascii[loop];

}

/*

* 图片转为字符,并保存到AscPic.txt中

* start第一张图片的序号

* end最后一张图片的序号

* 默认图像尺寸160×120像素

* 默认扫描块为宽1高2的矩形(线段)

* */

void Pic2Asc(int start, int end)

{

int row, col;

int gray;

int loop;

char filename[64];

/*打开文件*/

FILE *fp;

if((fp = fopen("AscPic.txt", "w")) == NULL)

{

outtextxy(0, 0, "文件打开失败");

Sleep(3000);

return;

}

/*开始转换*/

PIMAGE img;

for(img = newimage(), loop = start; loop <= end; loop++)

{

sprintf(filename, "BAD_APPLE%08d.jpg", loop);

outtextxy(0, 0, filename);

getimage(img, filename, 0, 0);

for(row = 0; row < 120; row += 2)

{

for(col = 0; col < 160; col++)

{

gray = (GetRValue(getpixel(col, row, img)) + GetRValue(getpixel(col, row + 1, img))) * 9 / 51;

fputc(SearchAsc(ascpix, gray), fp);

}

fputc('\n', fp);

}

fputc('\n', fp);

}

/*善后处理*/

delimage(img);

fclose(fp);

}

/*

* 主函数

* */

int main(void)

{

initgraph(640, 480);

Pic2Asc(6529, 13009);

getch();

closegraph();

return 0;

}

打印部分

/**************************************************************

** 程序名称:BadApple动画演示

** 程序功能:图像模式下,ASCII字符动画

** 编译环境:VC++6.0 EGE 12.06

** 作者信息:Geodesic <Geodesicwl-cpro@yahoo.cn>

** 最后修改:2012-07-23

**************************************************************/

#include <graphics.h>

#include <ege/fps.h>

#include <stdio.h>

#include <time.h>

int main(void)

{

char Line[162];

FILE *fp;

int loop;

/*初始化*/

initgraph(960, 720, ege::INIT_ANIMATION);

setbkcolor(EGERGB(0xF5, 0xF5, 0xDC));

/*打开文件*/

if((fp = fopen("AscPic.txt", "r")) == NULL)

{

outtextxy(0, 0, "文件打开失败");

Sleep(2000);

exit(EXIT_FAILURE);

}

/*添加音乐*/

mciSendString("open BadApple.mp3 alias BadApple", NULL, 0, NULL);

mciSendString("play BAdApple", NULL, 0, NULL);

/*动画演示*/

fps f;

setcolor(EGERGB(0xFF, 0x0, 0x0));

for ( ; !feof(fp) && is_run(); delay_fps(30))

{

for(loop = 0; loop < 61; loop++)

{

if(fgets(Line, 162, fp) == NULL)

break;

setcolor(EGERGB(0x0, 0xFF, 0x0));

outtextxy(0, loop * 12, Line);

}

}

/*善后处理*/

fclose(fp);

closegraph();

return 0;

}

wodhy
站有一个但是网址打不开
展开Biu

b站有一个但是网址打不开QAQ

[查看全文]
★夜月☆
就不能吧
展开Biu

就不能吧graphics.h也发下么=578=

[查看全文]
dawayangzen
能发下该程序用的
展开Biu

能发下该程序用的graphics.h头文件么?547985499@qq.com,谢谢

[查看全文]
wishout
风音洛洛
取得了原视频的灰度值
展开Biu

取得了原视频的灰度值,用不同字母的相近灰度值填充的吧

[查看全文]
vio-lin
去美帝学
展开Biu

小G去美帝学EMBS 发表于 2012-12-28 11:15

好高级的样子~~~

看看就好 就当学习啦 我们在一直用c++做些实验时 突然看到这么个宝贝

奋发学习了 有没

[查看全文]
小G去美帝学EMBS
好高级的样子
展开Biu

好高级的样子~~~

[查看全文]
冰糕_要忘记
可能我觉得复杂的东西实际写出来完全不需要太
展开Biu

可能我觉得复杂的东西实际写出来完全不需要太多话的样子。。。哦这。。。

[查看全文]