Загрузка Изображения C/C++ [закрывается]

12
задан Jookia 19 July 2010 в 19:53
поделиться

6 ответов

Я всегда фанат CImg . Очень просто использовать. Другому пользователю понравился ответ . Я отправлю тот же пример, что и в ответе, чтобы вы могли увидеть, насколько легко получить доступ к пикселям и информации о размерах.

CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10
unsigned char pixel = *ptr;
23
ответ дан 2 December 2019 в 03:25
поделиться

FreeImage - хорошая библиотека с открытым исходным кодом

Вот пример кода, данные доступны с помощью "out.data ()"

FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeU(filename.c_str());
if (format == FIF_UNKNOWN)      format = FreeImage_GetFIFFromFilenameU(filename.c_str());
if (format == FIF_UNKNOWN)      throw(std::runtime_error("File format not supported"));

FIBITMAP* bitmap = FreeImage_LoadU(format, filename.c_str());
FIBITMAP* bitmap2 = FreeImage_ConvertTo32Bits(bitmap);
FreeImage_Unload(bitmap);

std::vector<char> out(FreeImage_GetWidth(bitmap2) * FreeImage_GetHeight(bitmap2) * 4);
FreeImage_ConvertToRawBits((BYTE*)out.data(), bitmap2, FreeImage_GetWidth(bitmap2) * 4, 32, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, true);

FreeImage_Unload(bitmap2);
11
ответ дан 2 December 2019 в 03:25
поделиться

Если вы используете OpenGL, то DevIL - хороший выбор, поскольку его стиль и соглашения придерживаются OpenGL больше, чем любой другой библиотеки. Ее относительно легко настроить, и она также имеет отличную поддержку множества форматов.

Одна вещь о слабаках. Хотя приятно установить рабочий код сторонних разработчиков, который был хорошо протестирован и сэкономил ваше время, не помешает также узнать, как работает загрузка изображений и почему она происходит именно так, как происходит. Если вы действительно хотите добиться хороших результатов в чем-то, я считаю, что вам нужно научиться делать это с нуля. Даже если в итоге вы используете код сторонних разработчиков.

3
ответ дан 2 December 2019 в 03:25
поделиться

Еще одна возможность (в основном, если не исключительно для Windows) - CXImage. Его очевидным преимуществом перед многими другими является поддержка многих необработанных форматов камер, если это имеет для вас значение.

1
ответ дан 2 December 2019 в 03:25
поделиться

Вы можете посмотреть SDL_Image , подпроект Simple DirectMedia Layer . Он служит простой абстракцией для загрузки нескольких различных форматов изображений. SDL написан на C, но его легко использовать с кодом C или C ++.

2
ответ дан 2 December 2019 в 03:25
поделиться

Существует Boost's GIL, который изначально был разработан Adobe. Возможно, он не самый интуитивно понятный, но это, безусловно, одна из самых полных и мощных либ.

4
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: