Advertisement
Guest User

Untitled

a guest
Apr 4th, 2014
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     bool GetImageDimensionFromFile(const std::string& fileName, int& width, int& height)
  2.     {
  3.         std::ifstream in(fileName.c_str(), std::ios::binary);
  4.         std::uint32_t temp = 0;
  5.         bool suc = false;
  6.  
  7.         if (!in.is_open()) {
  8.             return false;
  9.         }
  10.  
  11.         width = height = 0;
  12.         auto fmt = GetCxImageFormatFromFilename(fileName);
  13.         switch (fmt) {
  14.         case CXIMAGE_FORMAT_PNG:
  15.             in.seekg(16);
  16.             in.read(reinterpret_cast<char*>(&width), 4);
  17.             in.read(reinterpret_cast<char*>(&height), 4);
  18.             width = ntohl(width);
  19.             height = ntohl(height);
  20.             suc = true;
  21.             break;
  22.         case CXIMAGE_FORMAT_BMP:
  23.             in.seekg(14);
  24.             in.read(reinterpret_cast<char*>(&temp), 4);
  25.             if (temp == 40) {
  26.                 // Windows Format
  27.                 in.read(reinterpret_cast<char*>(&width), 4);
  28.                 in.read(reinterpret_cast<char*>(&height), 4);
  29.                 suc = true;
  30.             }
  31.             else if (temp == 20) {
  32.                 // MAC Format
  33.                 in.read(reinterpret_cast<char*>(&width), 2);
  34.                 in.read(reinterpret_cast<char*>(&height), 2);
  35.                 suc = true;
  36.             }
  37.             break;
  38.         case CXIMAGE_FORMAT_TGA:
  39.             in.seekg(12);
  40.             in.read(reinterpret_cast<char*>(&width), 2);
  41.             in.read(reinterpret_cast<char*>(&height), 2);
  42.             suc = true;
  43.             break;
  44.         }
  45.  
  46.         if (in.eof()) {
  47.             return false;
  48.         }
  49.         return suc;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement