如何以编程方式创建图像

时间:2013-11-07 14:31:31

标签: c

是否可以在C中以编程方式创建位图? 我想传递一些文字来绘制,例如。

createBitmapWithContents("Hello");

createBitmapWithContents("Hello \n other line");

它应该创建在其中绘制“Hello”的位图(或分别绘制第二个文本)。 此外,文本“Hello”可能是Unicode字符串。不一定是英文字符。

最好我想在不使用某些第三方库的情况下这样做。

2 个答案:

答案 0 :(得分:2)

你需要做两件事:

  • 在内存中生成代表字符串的图像
  • 将该图像存储到文件中

两者都可以在没有外部库的情况下完成(使用简单的预定义字符模式并以简单格式存储,如BMP)。

但请注意,使用高级图像绘制库(例如OpenCVImageMagick)可以轻松实现此目的。

首先要做的是定义一个数据结构来存储你的图像,如下所示:

struct Image {
    int height, width;
    unsigned char* pixels;
};

然后你必须生成分配图像的功能,释放图像以及将图像复制到另一个图像中的东西。

为了在图像上打印角色,您必须创建如下预定义模式:

char patternA[] = {
    0x00, 0x00, 0xff, 0x00, 0x00
    0x00, 0xff, 0x00, 0xff, 0x00
    0x00, 0xff, 0x00, 0xff, 0x00
    0x00, 0xff, 0xff, 0xff, 0x00
    0x00, 0xff, 0x00, 0xff, 0x00
    0x00, 0xff, 0x00, 0xff, 0x00
    0x00, 0xff, 0x00, 0xff, 0x00
};
Image imageOfA;
imageOfA.width = 5;
imageOfA.height= 7;
imageOfA.pixels= patternA;

您还可以从图像文件中读取这些模式,甚至可以从字体文件中更好地读取这些模式(但是没有外部库,您需要自己实现文件读取器。)

一旦获得了角色模式,就可以组合这些预定义图像来创建与输入字符串对应的新图像。

最后,您必须将图像结构写入文件。为此,您可以使用低级库(例如libjpeglibpng),也可以使用简单的文件格式(例如BMP)自行实现。

结论是真的想要使用第三方库来实现你想要的目标。

答案 1 :(得分:0)

您是否尝试使用谷歌搜索?

你可以做很多事情,例如你可以运行循环来创建自己的像素矩阵。检查this link here