SeqImages.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. typedef DWORD COLORREF;
  3. typedef uint8_t BYTE;
  4. typedef uint16_t WORD;
  5. typedef int32_t LONG;
  6. typedef unsigned short* PWORD;
  7. #define BITSPERPIXEL 32 // 目标格式每像素位数
  8. #define BITMAPBITSPERPIXEL 24 // 假设输入是24位BMP
  9. #define RGB(r, g, b) ((COLORREF)(((unsigned char)(r)|((unsigned short)((unsigned char)(g))<<8))|(((DWORD)(unsigned char)(b))<<16)))
  10. #pragma pack(push, 1)
  11. typedef struct {
  12. WORD bfType; // 必须为'BM'
  13. DWORD bfSize; // 文件大小
  14. WORD bfReserved1; // 保留
  15. WORD bfReserved2; // 保留
  16. DWORD bfOffBits; // 像素数据偏移量
  17. } BITMAPFILEHEADER;
  18. // BMP信息头结构(Linux环境下模拟)
  19. typedef struct {
  20. DWORD biSize; // 本结构大小
  21. LONG biWidth; // 宽度
  22. LONG biHeight; // 高度
  23. WORD biPlanes; // 色彩平面数,必须为1
  24. WORD biBitCount; // 每像素位数
  25. DWORD biCompression; // 压缩方式
  26. DWORD biSizeImage; // 像素数据大小
  27. LONG biXPelsPerMeter;// 水平分辨率
  28. LONG biYPelsPerMeter;// 垂直分辨率
  29. DWORD biClrUsed; // 使用的颜色数
  30. DWORD biClrImportant; // 重要颜色数
  31. } BITMAPINFOHEADER;
  32. #pragma pack(pop)
  33. class SeqImages
  34. {
  35. DWORD m_Count;
  36. vector<unsigned short *> m_pSmCircleBuff;
  37. int m_nWidth, m_nHeight;
  38. unsigned short * TransBmp2Raw(unsigned char* pBuff, DWORD width, DWORD height);
  39. unsigned char* LoadBmp(const char *szFilename, DWORD &width, DWORD &height);
  40. bool LoadBmpFromDirectory(const char *pszDirName);
  41. bool LoadRawFromDirectory(const char *pszDirName, DWORD dx, DWORD dy);
  42. bool CreateCircle(DWORD size, DWORD count);
  43. void CloseCircle();
  44. public:
  45. SeqImages();
  46. virtual ~SeqImages();
  47. bool LoadPath(const char *pPath, DWORD dwImgX = 0, DWORD dwImgY = 0);
  48. void PushMemImage(unsigned short* pRaw, int nW, int nH, int nBits);
  49. DWORD GetCurrentFrameID();
  50. unsigned short * GetImage();
  51. int GetNext();
  52. bool ResetImageID();
  53. bool ClearImage();
  54. int GetWidth() const { return m_nWidth; }
  55. int GetHeight() const { return m_nHeight; }
  56. int GetTotalFrameNumber();
  57. };