在c或c ++中打开jpeg或png图像作为像素数据

时间:2014-12-15 04:35:56

标签: c++ c image

这是我的第一篇文章,所以如果我不清楚地传达这个问题,请告诉我。

我试图在开发c ++中打开(黑白)jpeg或png图像文件作为数组,以便我可以隔离白色像素的位置。我理解的指针和隔离循环。但是,打开图像文件无法正常工作,并且无法找到我可以使用的示例。除了给定的     #include“cstdlib”     #include“iostream”     #include“stdio.h”

我没有其他头文件。 我知道fopen文件打开,但是我没有尝试显示图像数据。

感谢您的帮助

这不是我的代码。这是给我的BIV1991示例 我发布是因为没有找到gdiplus.h的标头。标题unknwn,windows,objidl被建议解决这个问题

#include <cstdlib>
#include <iostream>
#include <Unknwn.h>
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib,"gdiplus.lib") 
int main(int argc, char *argv[])
{
   // initialize gdiplus
Gdiplus::GdiplusStartupInput si;
ULONG_PTR token;
Gdiplus::GdiplusStartup(&token,&si,0);

// load image as bitmap, any formats supported
Gdiplus::Bitmap image(L"C:\\image.jpg",false);
int w = image.GetWidth();
// image.LockBits - to read pixels 
    system("PAUSE");
    return EXIT_SUCCESS;
}

2 个答案:

答案 0 :(得分:2)

如果您使用Windows编程,您可以使用GDIPlus读取Jpeg和其他图像类型并使用它们,例如绘图或获取它们的像素。保证100%。我做了很多次。

什么是包括

#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")

代码

中的操作
// initialize gdiplus
Gdiplus::GdiplusStartupInput si;
ULONG_PTR token;
Gdiplus::GdiplusStartup(&token,&si,0);

// load image, any formats supported
Gdiplus::Bitmap image(L"C:\\image.jpg",false);
int w = image.GetWidth();
// image.LockBits - to read pixels

答案 1 :(得分:0)

首先,没有标准的C ++库来处理图像。其次,jpeg和png图像格式是压缩图像格式,需要一些复杂的解压缩算法。因此,要开始使用图像,您有两种方法:

  1. 使用简单的图像格式,如bmp。 bmp只是像素缓冲区 用一些光头,描述像素缓冲格式。您可以 写一个程序将bmp加载到我们自己的一半(并浪费 约一个小时了解格式本身)。更多关于bmp: http://en.wikipedia.org/wiki/BMP_file_format

  2. 使用EXTERNAL     图书馆。也就是说,你没有这个库与您的语言或     编译包。您需要下载甚至安装它     有时。一般来说,要使用外部库,您需要做五个     大腿:1)在Internet上查找图像处理库。 2)将xxx.lib文件放在项目文件夹中。 3)告诉你的链接器你想使用xxx.lib 4)添加你的代码#include“xxx.h”。 5)使用库API加载图像。