我想迭代遍历
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;
Qt有一个QImage类: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));
}
}
jpeglib是一个非常方便的库,可以用来处理JPEG图像。
如果需要访问像素级别的信息,libjpeg和JAI Image I/O工具应该就足够了。JAI提供了比这更高级的图像处理框架。所有选项都允许您读写图像文件中的像素。
libjpeg 使用C/C++编写。它适用于Linux和Windows。我以前在Linux上使用过它,效果很好。但是,如果您想处理其他类型的图像,则可能需要获取其他软件包并学习另一个API接口。
Java Advanced Imaging(JAI) Image I/O Tools 记得下载特定于平台的Java软件包,因为不同系统有特定的优化。它不仅涵盖JPG,还涵盖其他图像格式,并具有完全相同的API接口。
Java Advanced Imaging(JAI) 如果您计划进行更高级别的处理,例如使用图像运算符和滤镜,则可以使用此工具包。这是一个提供比JAI Image I/O工具更高级功能的软件包。
编辑:根据建议删除1、2和3。