数字转换成bitmap的问题

fang 2014-02-19 08:38:30
请问要将数字比如(123456)之类的转换成bitmap图片,也就是要在内存中画这个bitmap图片,不使用任何windows方面DC之类的操作处理。请问这个要怎么弄,我先谢谢了。
...全文
402 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdragonx 2014-08-10
  • 打赏
  • 举报
回复
第一,OpenIL不是绑定windows平台的,有源代码,你可以自己编译。 第二,如果你要数字转图像数据的话,如果是纯数字或者较少的英文字母、文字,你可以自己搞个图片字库,然后自己取数据。BMP的文件结构和数据结构搞明白了很简单。如果你涉及的文字很多,很全面,可以使用freetype,这个在linux下应用很多,跨平台的。 你用那个库,不通过DC,都要自己处理图像数据,这是DC操作底层的东西。
zilaishuichina 2014-03-05
  • 打赏
  • 举报
回复
你不用DC, 那就是自己做点阵呗,把你自己的1234567890的点阵存成一个数组,然后往BMP里面填了
lm_whales 2014-03-05
  • 打赏
  • 举报
回复
Tiff,jpg 和 png ,gif 可以跨Winodws,linux 平台 其实直接使用简单的数据,8 Bits 灰度图, 24位,32位彩色位图就可以了 32位彩色位图,不需要数据对齐,其他都需要 里面可以直接放数据 8 Bits 灰度图 图像的亮度直接为 0~255 就可以了 24位,32位彩色位图 不需要颜色信息,也可设为类似灰度图像那种,每种颜色直接0~255即可 其实 4,8,16 Bits 位图最麻烦。 4,8Bits可能会压缩存储,可以还需要调色板 16Bits 分几种模式 5:5:5 ;5:6:5 据说还有4:4:4:4 格式的 1位的单色图像也很简单的。
shen_wei 2014-03-05
  • 打赏
  • 举报
回复
自己做字体,或者自绘了!!
lm_whales 2014-03-05
  • 打赏
  • 举报
回复
1)直接读取字库数据自己画 2)像赵老师那样,自己做字模 3)做字模利用windows 或者linux 字体 用API画出数字,并导出 数字字模或者笔画,导出为文件, 然后像赵老师那样处理
赵4老师 2014-02-21
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
char *m[77]={
"      ",
"      ",
"      ",
"  --- ",
"      ",
"      ",
"      ",
"  --- ",
" |   |",
" |   |",
" |   |",
" |   |",
" |   |",
"  --- ",
"      ",
"     |",
"     |",
"     |",
"     |",
"     |",
"      ",
"  --- ",
"     |",
"     |",
"  --- ",
" |    ",
" |    ",
"  --- ",
"  --- ",
"     |",
"     |",
"  --- ",
"     |",
"     |",
"  --- ",
"      ",
" |   |",
" |   |",
"  ---|",
"     |",
"     |",
"      ",
"  --- ",
" |    ",
" |    ",
"  --- ",
"     |",
"     |",
"  --- ",
"  --- ",
" |    ",
" |    ",
" |--- ",
" |   |",
" |   |",
"  --- ",
"  --- ",
"     |",
"     |",
"     |",
"     |",
"     |",
"      ",
"  --- ",
" |   |",
" |   |",
" |---|",
" |   |",
" |   |",
"  --- ",
"  --- ",
" |   |",
" |   |",
"  ---|",
"     |",
"     |",
"  --- ",
};
char s[11];
char p[7][67];
int d,y,x,r,c,L;
void LEDprint(int num) {
    L=sprintf(s,"%d",num);
    for (c=0;c<L;c++) {
        for (y=0;y<7;y++) {
            sprintf(p[y]+c*6,"%s",m[((s[c]!='-')?s[c]-'0'+1:0)*7+y]);
        }
    }
    for (y=0;y<7;y++) printf("%s\n",p[y]);
}
int main() {
    scanf("%d",&d);
    LEDprint(d);
    return 0;
}
//-1234567890
//              ---   ---         ---   ---   ---   ---   ---   ---
//           |     |     | |   | |     |         | |   | |   | |   |
//           |     |     | |   | |     |         | |   | |   | |   |
//  ---      |  ---   ---   ---|  ---  |---      | |---|  ---| |   |
//           | |         |     |     | |   |     | |   |     | |   |
//           | |         |     |     | |   |     | |   |     | |   |
//              ---   ---         ---   ---         ---   ---   ---
//
xiaohuh421 2014-02-21
  • 打赏
  • 举报
回复
后面就是图像颜色数据啊, 要按你的图像的每像素占bit数来确定. http://hi.baidu.com/zj41342626/item/e4d0bdfcb36dbe17ff3582a6 你自己也可以要网上搜索下. 如果你完全不使用GDI或者其它现成的东西帮你绘制文字, 那么你就需要字库, 然后自己处理文字的点阵数据,放到位图数据中.
MewX 2014-02-20
  • 打赏
  • 举报
回复
再怎么也是要扯到GetGlyphOutline的。。。然后矩阵到图片就找libbmp好了,github一搜能搜几十个这个库。
图灵狗 2014-02-20
  • 打赏
  • 举报
回复
是跨平台的,优先支持的是linux,其次才是windows
引用 5 楼 fang098 的回复:
引用 1 楼 turingo 的回复:
用OpenIL(http://openil.sourceforge.net)库。 [quote=引用 楼主 fang098 的回复:] 请问要将数字比如(123456)之类的转换成bitmap图片,也就是要在内存中画这个bitmap图片,不使用任何windows方面DC之类的操作处理。请问这个要怎么弄,我先谢谢了。
我查了下你给的那个库是绑定widnows平台的,我现在需要的是在linux下也要能用,可能得重新再找找了,不过还是谢谢你。 [/quote]
fang 2014-02-20
  • 打赏
  • 举报
回复
引用 3 楼 xiaohuh421 的回复:
这需要你了解位图格式. 比如24bit位图.格式为:BMP文件头+_位置信息头+BGR排列的位图数据.
BMP文件头(14 byte)+_位置信息头(40 byte) + 调色板(4 byte) + 文字信息(这个文字信息是要怎么组织写下去)我是将数据接在调色板后面直接写的,这样是肯定不行的,还请xiaohuh421告知下要怎么弄,谢谢!
fang 2014-02-20
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
用OpenIL(http://openil.sourceforge.net)库。
引用 楼主 fang098 的回复:
请问要将数字比如(123456)之类的转换成bitmap图片,也就是要在内存中画这个bitmap图片,不使用任何windows方面DC之类的操作处理。请问这个要怎么弄,我先谢谢了。
我查了下你给的那个库是绑定widnows平台的,我现在需要的是在linux下也要能用,可能得重新再找找了,不过还是谢谢你。
fang 2014-02-20
  • 打赏
  • 举报
回复
引用 楼主 fang098 的回复:
请问要将数字比如(123456)之类的转换成bitmap图片,也就是要在内存中画这个bitmap图片,不使用任何windows方面DC之类的操作处理。请问这个要怎么弄,我先谢谢了。
我查了下你给的那个库是绑定widnows平台的,我现在需要的是在linux下也要能用,可能得重新再找找了,不过还是谢谢你。
xiaohuh421 2014-02-20
  • 打赏
  • 举报
回复
这需要你了解位图格式. 比如24bit位图.格式为:BMP文件头+_位置信息头+BGR排列的位图数据.
图灵狗 2014-02-19
  • 打赏
  • 举报
回复
用OpenIL(http://openil.sourceforge.net)库。
引用 楼主 fang098 的回复:
请问要将数字比如(123456)之类的转换成bitmap图片,也就是要在内存中画这个bitmap图片,不使用任何windows方面DC之类的操作处理。请问这个要怎么弄,我先谢谢了。

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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