jpeg.h
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:1k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #pragma once
  2. class CJpegEncoder
  3. {
  4. static const int ColorComponents = 3;
  5. int m_w, m_h;
  6. BYTE* m_p;
  7. unsigned int m_bbuff, m_bwidth;
  8. bool PutBit(int b, int n);
  9. void Flush();
  10. int GetBitWidth(short q);
  11. void WriteSOI();
  12. void WriteDQT();
  13. void WriteSOF0();
  14. void WriteDHT();
  15. void WriteSOS();
  16. void WriteEOI();
  17. protected:
  18. virtual bool PutByte(BYTE b) = 0;
  19. virtual bool PutBytes(const void* pData, int len) = 0;
  20. virtual bool Encode(const BYTE* dib);
  21. public:
  22. CJpegEncoder();
  23. };
  24. class CJpegEncoderFile : public CJpegEncoder
  25. {
  26. CString m_fn;
  27. FILE* m_file;
  28. protected:
  29. bool PutByte(BYTE b);
  30. bool PutBytes(const void* pData, int len);
  31. public:
  32. CJpegEncoderFile(LPCTSTR fn);
  33. bool Encode(const BYTE* dib);
  34. };
  35. class CJpegEncoderMem : public CJpegEncoder
  36. {
  37. CAtlArray<BYTE>* m_pdata;
  38. protected:
  39. bool PutByte(BYTE b);
  40. bool PutBytes(const void* pData, int len);
  41. public:
  42. CJpegEncoderMem();
  43. bool Encode(const BYTE* dib, CAtlArray<BYTE>& data);
  44. };