c++视频转字符画_c++字符数组转化为字符串

c++视频转字符画_c++字符数组转化为字符串运行此程序需要有graphics图形库#include <stdio.h>#include <graphics.h> // 图形库的头文件#define HEIGHT 8 // 转换后的高度#define WIDTH 8 // 转换后的宽度#define ASCII1 32 // 转换ASCII数量struct ASCII{ char as…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

EasyX库

运行此程序需要有graphics图形库,需要的小伙伴可以点击下方连接下载:
https://download.csdn.net/download/weixin_45525272/46595007

双击exe,安装对应VS版本的库即可

效果展示

输入图片路径后,回车 运行后当前目录会出现一个txt文件,转换成功
在这里插入图片描述

哈哈,可能这样看不出来
上原图

在这里插入图片描述
字符图片如下
在这里插入图片描述
不要放大此图,看着是不是有张人脸,很像原图

代码

直接上代码,放控制台即可运行

#include <stdio.h>
#include <graphics.h> // 图形库的头文件
#define HEIGHT 8 // 转换后的高度
#define WIDTH 8 // 转换后的宽度
#define ASCII1 32 // 转换ASCII数量
struct ASCII
{ 

char asc[ASCII1];		// ASCII码的范围
int gray[ASCII1];		// 灰度值的范围
}as{ 
 ' ', '`', '.', '^', ',', ':', '~', '"', '<', '!', 'c', 't', '+', '{', 'i', '7', '?',
'u', '3', '0', 'p', 'w', '4', 'A', '8', 'D', 'X', '%', '#', 'H', 'W', 'M',
0, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
39, 41, 43, 45, 47, 49, 51, 53, 55, 59, 61, 63, 66, 68, 70 };
// 使用二分查找来计算字符与灰度值的匹配
char AsciiToGray(struct ASCII as,int gray)
{ 

int low = 0;		// 低
int mid;			// 中
int high = ASCII1;	// 高
// 
if (gray <= as.gray[0])
{ 

return as.asc[0];		// 返回最低端Ascii码
}
else if (gray >= as.asc[ASCII1 - 1])
{ 

return as.asc[ASCII1 - 1];		// 返回最高端Ascii码
}
else
{ 

// 二分查找的核心
while ((high - low) > 1)
{ 

mid = (low + high) / 2;			// 去中间值
if (gray > as.gray[mid])		// 传入的灰度值大于结构体灰度值
{ 

low = mid + 1;				// 移动低标记
}
else
{ 

high = mid - 1;				// 移动高标记
}
}
return as.asc[low];					// 返回ASCII码用于写入文本文件
}
}
// 将图片转换为字符
void PhotoToAscii(struct ASCII as,char filename[])
{ 

int height, windth, gray;		// 图像的高、宽、灰度值
IMAGE img;
// 加载图片文件
loadimage(&img, filename);
SetWorkingImage(&img);
// 得到转换后图像的宽和高
height = getheight() / HEIGHT;
windth = getwidth() / WIDTH;
// 打开文件 r 读 w 写
FILE *file;
if ((file = fopen("字符图案.txt", "w")) == NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
for (int i = 0; i < height; i++)
{ 

for (int j = 0; j < windth; j++)
{ 

gray = 0;
// 扫描每一块像素的灰度值进行累加
for (int h = 0; h < HEIGHT; h++)
{ 

for (int w = 0; w < WIDTH; w++)
{ 

gray += GetRValue(RGBtoGRAY(getpixel(j*WIDTH + w, i*HEIGHT + h)));
}
}
// 求像素点平均灰度值
gray /= (HEIGHT*WIDTH);
gray = (255 - gray) * 90 / 255;
fputc(AsciiToGray(as, gray), file);
}
// 写入换行
fputc('\n', file);
}
// 关闭打开的文件
fclose(file);
}
int main()
{ 

// 文件名的字符数组
char filename[256];
printf("请输入文件名(包含扩展名):");		// 提示
gets_s(filename);							// 获取文件名
PhotoToAscii(as,filename);					// 将图片转换为字符
printf("转换成功!");
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170912.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • idea2021激活吗[最新免费获取]

    (idea2021激活吗)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • 秦九韶计算多项式的方法_秦九韶

    秦九韶计算多项式的方法_秦九韶本人水平有限,题解不到为处,请多多谅解本蒟蒻谢谢大家观看秦九韶公式:可不断的提取x作公因式,写成如上形式不断将x=4由里往外扩展,大大方便了计算

  • MapReduce编程模型详解

    MapReduce编程模型详解1.1MapReduce是什么  HadoopMapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集。1.2MapReduce做什么…

  • jdk提供的线程池_创建线程的三种方法

    jdk提供的线程池_创建线程的三种方法JDK1.8创建线程池有哪几种方式?newFixedThreadPool定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程测试代码:publicclassTestThreadPool{ //定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化…

  • 决策引擎上线啦「建议收藏」

    决策引擎上线啦「建议收藏」决策服务基本都涵盖了信用和市场的整个生命周期管理,从客户获取、申请审批、客户管理、催收和欺诈管理等业务应用等等方面。基于这样的需求,决策引擎在此时便孕育而生。目前在风控系统上,决策引擎更是都是非常成熟稳定的模块。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号