Boost 1.68计划于 2018 年 8 月 8 日发布,最终将交付新的 Boost.GIL IO(又名 IOv2)很久以前就已经审核并接受了。它已经可以从master
Boost 超级项目的当前分支获得(查看 Boost.GIL CONTRIBUTING.md以获取如何使用超级项目的指南)。
现在,您可以使用 Boost 1.68 或更高版本的 GIL,这里是展示如何从输入流中读取图像的示例。它不必是基于文件的流,但任何std::istream
兼容的流都应该可以工作。
#include <boost/gil.hpp>
#include <boost/gil/io/io.hpp>
#include <boost/gil/extension/io/jpeg.hpp>
#include <fstream>
#include <iostream>
int main(int argc, char* argv[])
{
if (argc != 2)
{
std::cerr << "input jpeg file missing\n";
return EXIT_FAILURE;
}
try
{
std::ifstream stream(argv[1], std::ios::binary);
namespace bg = boost::gil;
bg::image_read_settings<bg::jpeg_tag> read_settings;
bg::rgb8_image_t image;
bg::read_image(stream, image, read_settings);
return EXIT_SUCCESS;
}
catch (std::exception const& e)
{
std::cerr << e.what() << std::endl;
}
return EXIT_FAILURE;
}