提升吉尔创造形象

Bri*_*ian 14 c++ boost-gil

我一直在尝试阅读boost :: gil文档,但它介于缺乏和复杂之间.

暂且不谈,我需要一个如何执行以下操作的示例:

创建一个512x512的图像.用红色像素填充.写信给PNG.

在gil的文档中,我找不到任何关于做任何这些的事情.特别是创建图像或用像素部分填充它.

如果有人可以提供帮助,谢谢.

Cub*_*bbi 24

我还没有用过GIL,但我也想学习它.看了设计指南并搜索了与libpng相关的错误,看起来最简单的例子就是

#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_dynamic_io.hpp>
using namespace boost::gil;
int main()
{
    rgb8_image_t img(512, 512);
    rgb8_pixel_t red(255, 0, 0);
    fill_pixels(view(img), red);
    png_write_view("redsquare.png", const_view(img));
}
Run Code Online (Sandbox Code Playgroud)

适用于我,-lpng在命令行上生成此图像

在此输入图像描述

  • 对于可能想要控制每个像素颜色的未来读者:只需获取图像的视图(`rgb8_image_t :: view_t v = view(img)`)并在其上设置像素:`v(10,20)= rgb8_pixel_t( 255,0,123)`.或者在视图中使用迭代器,就像在文档中一样. (7认同)
  • @cubbi 提供的答案对于 Boost 1.67 或更早版本中发布的 GIL 来说是完全正确的。由于 I/O 扩展已在 Boost 1.68 中发布的 Boost.GIL 中完全重写,因此该示例需要调整。如有任何问题,请随时询问 https://github.com/boostorg/gil#community (2认同)