C++ 怎么能得到一张照片的字节数组,jpg或者png格式的都可以
2个回答
展开全部
1,加载一张图片,使用GDI+的Bitmap类,创建一个对象,Bitmap *bitmap=Bitmap::FromFile("example.png");
2,从Bitmap对象中获得HBITMAP句柄,HBITMAP句柄指向位图,
HBITMAP hBMP;
bitmap->GetHBITMAP(NULL,hBMP);
3,从句柄中找到位图结构体,位图结构体(BITMAP)包含了关于位图的所有信息
BITMAP bitmap;
GetObject(hBMP,sizeof(BITMAP),&bitmap);
4,参照BITMAP结构体,就能得到你要的字节数组
bitmap.bmBits;
不过得到的不一定是字节数组,因为图像有的用3个字节表示一个像素,有的是一个位标识一个像素。
追问
要得到的必须是字节数组才行,有办法吗?
追答
得到的bmBits是一个(void *)类型的指针,指向一段内存,这段内存里面存放的是图像的像素数据。
计算机里所有的数据都是按字节访问的,所以你可以按字节数组的方式访问这个地址。
只是这段内存里,一个像素可能以3个字节为单位,也可能一个字节表示8个像素。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询