c++ - Boost GIL 图像构造函数

标签 c++ boost png boost-gil

我目前正在尝试弄清楚如何使用 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。这不是完全相同的解决方案,但它适用于我的应用程序。

最佳答案

听起来您同时解决了问题,但仅供记录...以下是有关您的问题的一些信息:

  1. 首先,您可能错过了 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));
    }
    
  2. point_t 很可能引用 boost/gil/utilities.hpp 中定义的 point2 类模板。

  3. 一般来说,您应该检查 complete documentation Boost GIL 解决教程中未提及的所有问题。为了更深入地了解该库,绝对有必要熟悉设计指南和 Doxygen 文档。

关于c++ - Boost GIL 图像构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766218/

相关文章:

c++ - 多读/单写类的线程安全

image-processing - 将多个图像压缩为单个图像

C++ 嵌套循环没有给我任何值

c++ - 通过EDSDK并行控制佳能相机

c++ - Windows 函数 ChoosePixelFormat 在 Windows 7 上返回 ERR_OLD_WIN_VERSION

c++ - 奥尔森时区与Posix时区转换

c++ - 如何告诉 boost::split_iterator 从字符串中间开始?

java - 在 Java 或 ImageMagick 中测量两个图像的相似性

android - 在 Android 上使用 JPEG 作为背景而不是 PNG

c++ - 为什么编译器会在这里提示函数歧义?