HDC * CreateImage(long width, long height) { BITMAPINFO bmInfo = {0}; memset(&bmInfo,0,sizeof(bmInfo)); bmInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmInfo.bmiHeader.biWidth = width; bmInfo.bmiHeader.biHeight = height * -1; // Negative gives us a top-down image. bmInfo.bmiHeader.biPlanes = 1; bmInfo.bmiHeader.biBitCount = 24; bmInfo.bmiHeader.biCompression = BI_RGB; HDC hdc = ::CreateCompatibleDC(NULL); ScopeGuard guardDC = MakeGuard(::DeleteDC, hdc); unsigned char *pBits = NULL; HBITMAP hbm = ::CreateDIBSection(hdc, &bmInfo, DIB_RGB_COLORS, (void **)&pBits, NULL, NULL); writeTIFF("C:\\Flake.tif", hdc); //DeleteObject(SelectObject(hdc, hbm)); return &hdc; }
/** * Write float image as TIFF 32 bits per sample. */ int io_tiff_write_f32(const char *fname, const float *data, size_t nx, size_t ny, size_t nc) { int ok; TIFF *tif = TIFFOpen(fname, "w"); if (!tif) { fprintf(stderr, "Unable to write TIFF file %s\n", fname); return 0; } ok = writeTIFF(tif, data, nx, ny, nc); TIFFClose(tif); return (ok ? 0 : -1); }