我目前正在尝试弄清楚如何使用 Boost 中包含的通用图像库。现在,我只想使用该库来存储像素数据并使用图像 IO 来写入 PNG。然而,我无法理解如何设置该对象。
hpp 说
image(const point_t& dimensions,
std::size_t alignment=1) : _memory(0), _align(alignment) {
allocate_and_default_construct(dimensions);
}
但除了 view_t::point_t 到 point_t 的 type_def 之外,我找不到任何对 point_t 的引用。
此外,GIL 的教程似乎只包括编写过滤器和通用算法,因此他们提供的每个函数示例都有一个源 ImageView ,从中获取尺寸。
我的处理方式是错误的吗?或者有什么我完全错过的事情吗?
提前致谢
编辑:我不知道是否有人关心或读过这篇文章,但为了记录,我只是使用了 boost interleaved image 函数来创建一个 PNG。这不是完全相同的解决方案,但它适用于我的应用程序。
最佳答案
听起来您同时解决了问题,但仅供记录...以下是有关您的问题的一些信息:
首先,您可能错过了 boost::gil::image 的第二个构造函数,它提供了对水平和垂直维度的显式访问,而无需 point_t:
image(x_coord_t width, y_coord_t height, std::size_t alignment=0, const Alloc alloc_in = Alloc()) : _memory(0), _align_in_bytes(alignment), _alloc(alloc_in) { allocate_and_default_construct(point_t(width,height)); }
point_t 很可能引用
boost/gil/utilities.hpp
中定义的 point2 类模板。一般来说,您应该检查 complete documentation Boost GIL 解决教程中未提及的所有问题。为了更深入地了解该库,绝对有必要熟悉设计指南和 Doxygen 文档。
关于c++ - Boost GIL 图像构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766218/