user-0 提问: 数字转换成bitmap的问题

回复:
user: user-1
content: 第一，OpenIL不是绑定windows平台的，有源代码，你可以自己编译。  第二，如果你要数字转图像数据的话，如果是纯数字或者较少的英文字母、文字，你可以自己搞个图片字库，然后自己取数据。BMP的文件结构和数据结构搞明白了很简单。如果你涉及的文字很多，很全面，可以使用freetype，这个在linux下应用很多，跨平台的。  你用那个库，不通过DC，都要自己处理图像数据，这是DC操作底层的东西。

user: user-2
content: 你不用DC， 那就是自己做点阵呗，把你自己的1234567890的点阵存成一个数组，然后往BMP里面填了

user: user-3
content: 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位的单色图像也很简单的。

user: user-4
content: 自己做字体，或者自绘了！！

user: user-3
content: 1）直接读取字库数据自己画 2）像赵老师那样，自己做字模 3）做字模利用windows 或者linux 字体     用API画出数字，并导出 数字字模或者笔画，导出为文件，    然后像赵老师那样处理

user: user-5
content: 仅供参考#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 //              ---   ---         ---   ---   ---   ---   ---   --- //           |     |     | |   | |     |         | |   | |   | |   | //           |     |     | |   | |     |         | |   | |   | |   | //  ---      |  ---   ---   ---|  ---  |---      | |---|  ---| |   | //           | |         |     |     | |   |     | |   |     | |   | //           | |         |     |     | |   |     | |   |     | |   | //              ---   ---         ---   ---         ---   ---   --- //

user: user-6
content: 后面就是图像颜色数据啊, 要按你的图像的每像素占bit数来确定.  http://hi.baidu.com/zj41342626/item/e4d0bdfcb36dbe17ff3582a6  你自己也可以要网上搜索下.  如果你完全不使用GDI或者其它现成的东西帮你绘制文字, 那么你就需要字库, 然后自己处理文字的点阵数据,放到位图数据中.

user: user-7
content: 再怎么也是要扯到GetGlyphOutline的。。。然后矩阵到图片就找libbmp好了，github一搜能搜几十个这个库。

user: user-8
content: 是跨平台的，优先支持的是linux，其次才是windows  引用 5 楼 fang098 的回复:引用 1 楼 turingo 的回复:用OpenIL(http://openil.sourceforge.net)库。  [quote=引用 楼主 fang098 的回复:] 请问要将数字比如(123456)之类的转换成bitmap图片，也就是要在内存中画这个bitmap图片，不使用任何windows方面DC之类的操作处理。请问这个要怎么弄，我先谢谢了。  我查了下你给的那个库是绑定widnows平台的，我现在需要的是在linux下也要能用，可能得重新再找找了，不过还是谢谢你。 [/quote]

user: user-0
content: 引用 3 楼 xiaohuh421 的回复:这需要你了解位图格式. 比如24bit位图.格式为:ＢＭＰ文件头+_位置信息头+BGR排列的位图数据. ＢＭＰ文件头(14 byte)+_位置信息头(40 byte) + 调色板(4 byte) + 文字信息(这个文字信息是要怎么组织写下去)我是将数据接在调色板后面直接写的，这样是肯定不行的，还请xiaohuh421告知下要怎么弄，谢谢！

user: user-0
content: 引用 1 楼 turingo 的回复:用OpenIL(http://openil.sourceforge.net)库。  引用 楼主 fang098 的回复:请问要将数字比如(123456)之类的转换成bitmap图片，也就是要在内存中画这个bitmap图片，不使用任何windows方面DC之类的操作处理。请问这个要怎么弄，我先谢谢了。  我查了下你给的那个库是绑定widnows平台的，我现在需要的是在linux下也要能用，可能得重新再找找了，不过还是谢谢你。

user: user-0
content: 引用 楼主 fang098 的回复:请问要将数字比如(123456)之类的转换成bitmap图片，也就是要在内存中画这个bitmap图片，不使用任何windows方面DC之类的操作处理。请问这个要怎么弄，我先谢谢了。  我查了下你给的那个库是绑定widnows平台的，我现在需要的是在linux下也要能用，可能得重新再找找了，不过还是谢谢你。

user: user-6
content: 这需要你了解位图格式. 比如24bit位图.格式为:ＢＭＰ文件头+_位置信息头+BGR排列的位图数据.

user: user-8
content: 用OpenIL(http://openil.sourceforge.net)库。  引用 楼主 fang098 的回复:请问要将数字比如(123456)之类的转换成bitmap图片，也就是要在内存中画这个bitmap图片，不使用任何windows方面DC之类的操作处理。请问这个要怎么弄，我先谢谢了。