|
|
发表于 2007-6-21 10:53:00
|
显示全部楼层
Re:读取png纹理图片的代码
CImage img;
if(img.Load(lpszTexture) != S_OK)
return false;
int nBPP = img.GetBPP();
if(!((nBPP == 24)||(nBPP == 32))) //只支持24,32位
return false;
int nWidth = img.GetWidth();
int nHeight = img.GetHeight();
BYTE *pTexture = new BYTE[nWidth * nHeight * 3];
int nPitch = img.GetPitch();
LPBYTE lpData, lpLine, lpCurPixel;
lpData = lpLine = (LPBYTE)img.GetBits();
int nBytesPP = nBPP >> 3;
for(int i = 0; i < nHeight; i++)
{
lpLine = lpData + i * nPitch;
for(int j = 0; j < nWidth; j++)
{
lpCurPixel = lpLine + j * nBytesPP;
pTexture[(i * nWidth + j)*3] = *(lpCurPixel + 2); //R
pTexture[(i * nWidth + j)*3 + 1] = *(lpCurPixel + 1); //G
pTexture[(i * nWidth + j)*3 + 2] = *lpCurPixel; //B
}
}
上面这段代码可以读取24位,32位的图象(jpg,bmp,png,tiff等图象格式)。注意使用CImage类时要
#include "atlimage.h"
此外,楼主不是我:) |
|