【问题标题】:how to create image programmatically如何以编程方式创建图像
【发布时间】:2013-11-07 14:31:31
【问题描述】:

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

createBitmapWithContents("Hello");

createBitmapWithContents("Hello \n other line");

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

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

【问题讨论】:

标签: c


【解决方案1】:

你需要做两件不同的事情:

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

两者都可以在没有外部库的情况下完成(使用简单的预定义字符模式并存储为简单格式,例如 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)自行实现。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多