0

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

createBitmapWithContents("Hello");

或者

createBitmapWithContents("Hello \n other line");

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

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

4

2 回答 2

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)自己实现它。

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

于 2013-11-07T14:34:50.063 回答
0

你试过用谷歌搜索这个吗?

您可以做很多事情,例如,您可以运行循环来创建自己的像素矩阵。在此处查看此链接

于 2013-11-07T14:35:51.157 回答