Я хочу выполнить итерации по каждому пикселю, раскрашивают a jpg
изображение формата,
к какой библиотеке я должен обратиться сделать это так, чтобы код мог быть максимально коротким?
Я могу вспомнить ImageMagick или CImg . Вот вам учебное пособие по CImg . Они абстрагируются от многих деталей декомпрессии и просто дают вам сетку для работы.
Если вы используете CImg, вам нужно только использовать вызов data . Вероятно, вы можете сделать что-то вроде:
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;
jpeglib - довольно удобная библиотека для игры с jpeg.
для доступа к информации на уровне пикселей. libjpeg & JAI Image I / O Tools должно быть достаточно. JAI предоставляет больше возможностей для обработки изображений. Все параметры позволяют читать / записывать пиксели в файл изображения.
libjpeg В C / C ++. Он доступен для Linux и Windows. Раньше я использовал его в Linux, и он хорошо работает. Однако, если вы хотите обрабатывать другой тип изображения, вам может потребоваться получить другой пакет и изучить другой интерфейс API.
Инструменты ввода-вывода изображений Java Advanced Imaging (JAI) Не забудьте загрузить java-пакет для конкретной платформы, потому что для другой системы есть специальная оптимизация. Он охватывает не только JPG, но и другие форматы изображений с точно таким же интерфейсом API.
Java Advanced Imaging (JAI) Если вы планируете выполнять более продвинутый уровень обработки, например, с помощью оператора изображения и фильтра, вы можете использовать это. Этот пакет обеспечивает более высокий уровень функциональности, чем JAI Image I / O Tools.
РЕДАКТИРОВАТЬ: удалить 1, 2 и 3, как предлагается
Я бы использовал Allegro Game Library http://liballeg.org/Allegro , она простая / с открытым исходным кодом / бесплатная / мультиплатформенная, и вы можете итерировать пиксель за пикселем, если хотите
В Qt есть класс QImage:
QImage i("input.jpg");
int x, y;
for (y = 0; < i.height(); ++y) {
for (x = 0; x < i.width(); ++x) {
doSomethingWith(i.pixel(x, y));
}
}
Попробуйте FreeImage , он кажется довольно универсальным, и многие проекты его используют.