Я работаю над игровым движком, и я слишком разбираюсь в том, чтобы писать загрузчики изображений для нескольких форматов, поэтому мой вопрос таков: есть ли библиотека загруженного изображения для загрузки файлов изображений ? Мне просто нужно загрузить файлы, а затем выложить их на экран, используя массив пикселей.C/C++ Загрузка изображения
ответ
Я всегда поклонник CImg. Он очень прост в использовании. Еще одному пользователю понравился the answer. Я опубликую тот же самый пример, который я разместил в ответе, чтобы вы могли видеть, как легко обращаться к пикселям и информации о размере.
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;
Позор у них нет 64-битного порта. По крайней мере, они говорят об этом в своем FAQ. –
Что вы имеете в виду? Эта библиотека является только заголовочным файлом и компилируется в 64-битном режиме. –
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);
Оболочка C++ кажется немного глючной, по крайней мере, с g ++. Связывание библиотеки проблематично, хотя версия c отлично работает. – jiggunjer
Вы могли бы посмотреть на SDL_Image, подпроект Simple DirectMedia Layer. Он служит простой абстракцией для загрузки нескольких различных форматов изображений. SDL написан на C, но прост в использовании с кодом C или C++.
OP даже не подразумевает, что C и C++ являются «языком». OP ищет решение, которое является либо C, либо C++. –
@gbrandt, обновил мой ответ, чтобы отразить язык реализации SDL. –
Если вы используете OpenGL, то DevIL - хороший выбор, поскольку его стиль и соглашения придерживаются OpenGL больше, чем любая другая библиотека. Его относительно легко настроить, а также поддерживает большую поддержку нескольких форматов.
Одна вещь о wuss предмет. Хотя неплохо настроить рабочий сторонний код, который был хорошо протестирован и сэкономит ваше время, есть что сказать и узнать о том, как работает загрузка изображений и почему он работает так, как он делает. Если вы действительно хотите что-то добиться, я считаю, что вам нужно научиться делать это с нуля. Даже если вы в конечном итоге используете сторонний код.
Еще одна возможность (в первую очередь, если не для Windows) - CXImage
. Его очевидное преимущество перед многими другими - поддержка многих форматов необработанных камер, в случае, если это важно для вас.
Boost's GIL был изначально разработан Adobe. Это может быть не самый интуитивный, но это, безусловно, одна из самых полных и мощных библиотек.
'boost :: gil' сам по себе не загружает графические форматы. Он обеспечивает равномерный интерфейс для выполнения пиксельных алгоритмов. Помощники загрузчика изображений в 'boost :: gil' требуют наличия соответствующих библиотек (например,' libtiff', 'libpng' и т. Д.) – kizzx2
, что верно и для CImg, оно поддерживает несколько форматов изначально, остальное необходимо 3 партийных библиотек. – jiggunjer
OpenImageIO поддерживает множество форматов различных файловых среди них TIFF, JPEG/JFIF, OpenEXR, PNG, HDR/RGBE, ICO, BMP, Targa, JPEG-2000, RMAN Zfile, FITS, ДДС, Softimage PIC, PNM, DPX, Cineon, IFF, Field3D, Ptex, Photoshop PSD, Wavefront RLA, SGI, WebP и GIF
- 1. createjs flash cc, отдельная предварительная загрузка манифеста
- 2. Предварительная загрузка изображений до CC - за souders
- 3. Загрузка изображения и загрузка
- 4. Photoshop CC 2017 Scripting Экспорт качества изображения
- 5. флэш CC обыкновение вставлять активы изображения
- 6. Загрузка изображения Просмотр изображения
- 7. Загрузка изображения
- 8. Загрузка изображения
- 9. Загрузка изображения
- 10. Загрузка изображения
- 11. Загрузка изображения?
- 12. Загрузка изображения?
- 13. Загрузка изображения
- 14. Загрузка изображения
- 15. Загрузка изображения скрипта необязательная загрузка
- 16. Загрузка базы64 Загрузка VS Загрузка бинарного изображения?
- 17. Что такое «var cc = cc = cc || {};» line делать в Cocos2D?
- 18. Загрузка с изображения с изображения
- 19. Анимация Загрузка изображения изображения повторяется
- 20. Асинхронная загрузка изображения из парса
- 21. Загрузка уменьшенного изображения в tableView
- 22. CC delete option from CC explorer
- 23. Загрузка изображения из потока
- 24. Загрузка изображения PHP
- 25. AFNetworking Загрузка изображения
- 26. Загрузка изображения на S3
- 27. Правильная загрузка изображения jQuery()?
- 28. Загрузка изображения Компоненты MVC
- 29. Загрузка изображения в CakePHP
- 30. Загрузка изображения (opencv/C++)
Какая платформа? – bshields
Быть wuss кажется правильным. Не изобретать велосипед. – Tom
http://stackoverflow.com/a/28633405/184572 –