用文字制作成图片

简介: 最近呢,我一个朋友要过生日,我像给她一个硬核的生日祝福。然后就想到了用文字拼成她的QQ头像

话不多说,先看示例

1a393f77157e05c22a437828b36968e.png


4d5ed683b3f8171cf689723b8b6e553.png


不多说,直接上源码! 有不会的加QQ问我,等我上几个星期的学后回家就告诉你。

#include"graphics.h"

#include"stdio.h"

int main(void)

{

char str[256] = "";//请输入要表白的话

scanf_s("%s", str, sizeof(str));

//把字符串转换成数组形式的,“我爱你”,转换成“我”,“爱”,“你”

int count = strlen(str) / 2;//计算汉字个数

char** data = (char**)malloc(sizeof(char*) * count);

for (int i = 0; i < count; i++)

{

 data[i]=(char*)malloc(sizeof(char) * 3);//"我"占两个字节+'0'

 strncpy(data[i], &str[i * 2], 2);

 data[i][2] = 0;//字符串结束符

}

initgraph(200,40);

IMAGE img;//图片需要加工

loadimage(&img,_T("zz.jpg"));

//颜色是用 红绿蓝色调配成的,用三个字节.

//int 4 个字节 char 1个字节

int width = img.getwidth();//宽度

int height = img.getheight();//高度

 int *pix=(int*)malloc(sizeof(int)*width*height);//动态内存分配

 if (pix == NULL)

 {

  printf("图片分辨率过高");

  exit(1);

 }

 SetWorkingImage(&img);//对哪个图片进行加工

 int k = 0;

 for (int i = 0; i < height; i++)

 {

  for (int j = 0; j < width; j++)

  {//取出指定位置的颜色

   pix[k++] = getpixel(j, i);//坐标是宽度和高的

  }

 }

 SetWorkingImage();//恢复默认工作区,开始画图!

 //开始使用汉字画图

 //定义一个新的图片

 IMAGE imgDest;//空图片

 //调整新图片

 /*imgDest.Resize(width, height);*/

 //调整大小

 imgDest.Resize(width * 12, height * 12);//一个像素扩充成12*12

 SetWorkingImage(&imgDest);

 //设置字体

 LOGFONT f;

 gettextstyle(&f);//获取当前的字体

 f.lfHeight = 12;

 f.lfWidth = 0;//默认

 strcpy(f.lfFaceName, "黑体");//设置字体名称

 f.lfQuality = ANTIALIASED_QUALITY;//清除锯齿

 settextstyle(&f);

 int index = 0;

 for (int i = 0; i < height; i++)

 {

  for (int j = 0; j < width; j++)

  {

   int x = j * 12;

   int y = i * 12;

   //取出颜色

   int color = pix[i * width + j];

   //设置汉字绘制颜色

   settextcolor(color);

   outtextxy(x, y,data[index]);

   index = (index + 1) % count;//对汉字进行取余

  }

 }

 SetWorkingImage();

 //把图片保存到磁盘

 saveimage("ok.jpg", &imgDest);

 //让图片自动显示出来

 system("rundll32.exe C:\\Windows\\System32\\shimgvw.dll,ImageView_Fullscreen d:\\ok.jpg");

 system("pause");

 return 0;

}

目录
相关文章
|
3月前
|
存储 编解码 监控
针对3-15分钟视频的抽帧策略:让Qwen2.5 VL 32B理解视频内容
针对3-15分钟视频,提出高效抽帧策略:通过每5-10秒定间隔或关键帧检测方法,提取30-100帧关键图像,结合时间均匀采样与运动变化捕捉,降低冗余,提升Qwen2.5 VL 32B对视频内容的理解效率与准确性。
|
算法 程序员 Go
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
|
9月前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
区块链
Out of gas的解决方案 Although one or more Error Occurred [out of gas] Contract Execution Completed
该文章分析了以太坊交易中出现"Out of Gas"错误的原因,并提供了通过MetaMask客户端设置更高的Gas Limit来解决这一问题的详细步骤和建议。
317 2
Out of gas的解决方案 Although one or more Error Occurred [out of gas] Contract Execution Completed
|
Ubuntu 应用服务中间件 nginx
如何在 Ubuntu 操作系统上重新启动 Nginx?
如何在 Ubuntu 操作系统上重新启动 Nginx?
1812 0
如何在 Ubuntu 操作系统上重新启动 Nginx?
|
数据可视化 Java 程序员
通过文字图像——代码图形注释自动生成
大家在学(CTRL)习(C)别人代码的时候,看到别人的代码程序,在日志中有很多很酷的代码注释,或者是有一些图形化注释方便理解。之前本人以为都是一个个手敲出来的。然后在网上一番搜索,找到了很多神奇的好网站,以用于图形注释生成。 代码图形注释自动生成技术是一种将代码逻辑和结构可视化的创新工具。它通过解析编程代码,并将代码的功能、结构和逻辑关系转换成直观的图形注释,从而使得程序员能够更加轻松地理解和分析代码。这种技术特别适合于复杂代码的解读,帮助开发人员快速定位代码中的关键部分和潜在问题。此外,对于团队合作和代码教育来说,图形注释可以作为沟通和学习的桥梁,让代码的理解变得更加直观和高效。总的来说,
383 0
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
609 0
UE-蓝图中的使用正则表达式
实现用于匹配判断的正则表达式
|
SQL 运维 数据库
DataphinV3.14全新升级:数据研发突破全域覆盖,资产治理更加灵活可控
DataphinV3.14支持传统数据库调用,带来全新高效研发体验,及时全面的数据保护、自定义监控和审批让数据治理更灵活自由。
118945 1
|
Ubuntu C++
Ubuntu20.04LTS+uhd3.15+gnuradio3.8.1源码编译及安装
Ubuntu20.04LTS+uhd3.15+gnuradio3.8.1源码编译及安装
806 0