Чтение изображения JPEG из памяти с помощью boost :: gil

Я пытаюсь прочитать изображение из памяти с помощью boost::gil присутствует в бусте 1,53. Я взял следующие строки из примера, взятого из Интернета:

#include <boost/gil/gil_all.hpp>
boost::gil::rgb8_image_t img;
boost::gil::image_read_settings<jpeg_tag> readSettings;
boost::gil::read_image(mystream, img, readSettings);

За исключением первой строки, тип и функция в остальных строках не могут быть найдены в boost::gil namespace, поэтому я не могу проверить, соответствуют ли приведенные выше строки тому, что я хочу. У вас есть идеи, где взять необходимые типы и функции?

2

Решение

Смотрите новую версию GIL здесь: GIL стабильная версия

Работает хорошо и стабильно.

using namespace boost::gil;
image_read_settings<jpeg_tag> readSettings;
rgb8_image_t newImage;
read_image(stream, newImage, readSettings);

Ваш код кажется правильным.

3

Другие решения

Boost 1.68, который является планируется к выпуску 8 августа 2018 года, наконец доставит новый Boost.GIL IO (он же IOv2) рассмотрены и приняты давно.
Уже доступно с текущего master ветка супер-проекта Boost (проверьте Boost.GIL CONTRIBUTING.md руководство по работе с супер-проектом).

Теперь вы можете использовать GIL из Boost 1.68 или новее, вот пример, который показывает, как читать изображение из входного потока. Это не должен быть файловый поток, но любой 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;
}
2

По вопросам рекламы [email protected]