话不多说,先看示例
不多说,直接上源码! 有不会的加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;
}