如何将一个字符串变为图片

windowsxp0925 2008-06-23 08:02:21
比如说:

char test[] = "我很郁闷";

我想将test里的内容变为图片(位图),我不知道如何实现,有没有人能帮忙解决一下啊,谢谢!
...全文
302 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
windowsxp0925 2008-07-20
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 shaoxiong110 的回复:]
晓波 太感谢你了 根据你的提示 我成功的将汉字保存为了位图 真是太谢谢你了~!
[/Quote]

not at all :-)
shaoxiong110 2008-07-16
  • 打赏
  • 举报
回复
晓波 太感谢你了 根据你的提示 我成功的将汉字保存为了位图 真是太谢谢你了~!
fuqd273 2008-07-09
  • 打赏
  • 举报
回复
楼主很强

拜一下
过客猫2022 2008-06-24
  • 打赏
  • 举报
回复
用C++Builder,TBitmap可以直接画。最后,SaveToFile()就可以了
充电宝111 2008-06-24
  • 打赏
  • 举报
回复
如果不用图形库的话,实现起来有些难度~
你要理解,字符串打印到屏幕上也是点阵,也就是象素,位图也是
只不过两者存的格式不同
位图文件有个头,调色板,然后是数据
而字符也就是2种颜色的位图

char test[] = "我很郁闷";
找到这几个汉字的编码对应的点阵数据,其实就是位图的数据了
你可以参考一下ucgui里面的实现
yecheng_110 2008-06-24
  • 打赏
  • 举报
回复
用GD库吧
http://www.boutell.com/gd/
szkarry 2008-06-24
  • 打赏
  • 举报
回复
参考opengl
里面有接口可以实现
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
搞定


#define MAX_HZ_FILE_LEN 300000

char g_hz_inited=0;
char g_hz_buffer[MAX_HZ_FILE_LEN];
char *g_hz_file_name = "./Hzk16.dat"; //中文字库
int g_hz_file_size=0;

int init_hz()
{
int fd;
int file_size=0;

fd = open(g_hz_file_name, O_RDWR, 0666);
if(fd<0)
{
return -1;
}
lseek(fd, 0, SEEK_SET);
g_hz_file_size = lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);

file_size = 0;
int tmp_size=0;
while (file_size < g_hz_file_size)
{
tmp_size = read(fd, g_hz_buffer + file_size, g_hz_file_size - file_size);
file_size = file_size + tmp_size;
}
g_hz_inited = 1;
close(fd);
return 0;
}

int convert_hz_to_bmp(uint8_t *str, char * buffer)
{
int i,j,k;
int qcode,wcode;
char mat[16][2];
char * hz_ptr;

qcode=(*str)-0xa0;
wcode=*(str+1)-0xa0;
if (!g_hz_inited)
{
if (init_hz()<0)
return -1;
}

hz_ptr = g_hz_buffer + (94*(qcode-1)+(wcode-1))*32;

for(i=0;i<16;i++)
{
for(j=0;j<2;j++)
{
mat[i][j]=*(hz_ptr++);
}
}

for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++)
{
if(mat[j][i]&(0x80>>k))
{
buffer[3*(j*16 + i*8 + k)] = 255;
}else
{
buffer[3*(j*16 + i*8 + k)] = 0;
}
buffer[3*(j*16 + i*8 + k) + 1] = 0;
buffer[3*(j*16 + i*8 + k) + 2] = 0;
}

return 0;
}

fierygnu 2008-06-24
  • 打赏
  • 举报
回复
那就用freetype吧。
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jufeng2309 的回复:]
你直接借助GTK来实现。
GTK就是一个C的图形开发工具。
[/Quote]

不借用第三方图像库,用C语言和字库,把字符串存成(BMP 24色)的图片。
jufeng2309 2008-06-24
  • 打赏
  • 举报
回复
你直接借助GTK来实现。
GTK就是一个C的图形开发工具。
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fierygnu 的回复:]
引用 9 楼 windowsxp0925 的回复:
引用 5 楼 yecheng_110 的回复:
用GD库吧
http://www.boutell.com/gd/


TO yecheng_11:

谢谢你的解答,不过只能用C,没有使用GD库的条件 。


只能用C是什么意思?要生成什么格式的图片?
[/Quote]


不借用第三方图像库,用C语言和字库,把字符串存成(BMP 24色)的图片。
wargrey 2008-06-24
  • 打赏
  • 举报
回复
试试graphviz
fierygnu 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 windowsxp0925 的回复:]
引用 5 楼 yecheng_110 的回复:
用GD库吧
http://www.boutell.com/gd/


TO yecheng_11:

谢谢你的解答,不过只能用C,没有使用GD库的条件 。
[/Quote]

只能用C是什么意思?要生成什么格式的图片?
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zdhsoft 的回复:]
用C++Builder,TBitmap可以直接画。最后,SaveToFile()就可以了
[/Quote]

谢谢你的解答,linux + c,没有CB的那些控件。
gamedragon 2008-06-24
  • 打赏
  • 举报
回复
用FreeType这个库,当然前提是你要有字体文件。
yecheng_110 2008-06-24
  • 打赏
  • 举报
回复
你再仔细看看libgd
php也是封装C的接口
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cdbdyx 的回复:]
如果不用图形库的话,实现起来有些难度~
你要理解,字符串打印到屏幕上也是点阵,也就是象素,位图也是
只不过两者存的格式不同
位图文件有个头,调色板,然后是数据
而字符也就是2种颜色的位图

char test[] = "我很郁闷";
找到这几个汉字的编码对应的点阵数据,其实就是位图的数据了
你可以参考一下ucgui里面的实现
[/Quote]

THANK YOU,我看看ucgui。
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yecheng_110 的回复:]
用GD库吧
http://www.boutell.com/gd/
[/Quote]

TO yecheng_11:

谢谢你的解答,不过只能用C,没有使用GD库的条件 。
windowsxp0925 2008-06-24
  • 打赏
  • 举报
回复
To:szkarry

谢谢你的解答,不过只能用C,没有使用的opengl 条件 。
加载更多回复(3)

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧