MCPcopy Create free account
hub / github.com/RenderKit/embree / SaveEXRMultipartImageToFile

Function SaveEXRMultipartImageToFile

tutorials/common/image/tinyexr.h:8167–8222  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8165}
8166
8167int SaveEXRMultipartImageToFile(const EXRImage* exr_images,
8168 const EXRHeader** exr_headers,
8169 unsigned int num_parts,
8170 const char* filename,
8171 const char** err) {
8172 if (exr_images == NULL || exr_headers == NULL || num_parts == 0) {
8173 tinyexr::SetErrorMessage("Invalid argument for SaveEXRMultipartImageToFile",
8174 err);
8175 return TINYEXR_ERROR_INVALID_ARGUMENT;
8176 }
8177
8178 FILE *fp = NULL;
8179#ifdef _WIN32
8180#if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) // MSVC, MinGW GCC, or Clang.
8181 errno_t errcode =
8182 _wfopen_s(&fp, tinyexr::UTF8ToWchar(filename).c_str(), L"wb");
8183 if (errcode != 0) {
8184 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
8185 err);
8186 return TINYEXR_ERROR_CANT_WRITE_FILE;
8187 }
8188#else
8189 // Unknown compiler or MinGW without MINGW_HAS_SECURE_API.
8190 fp = fopen(filename, "wb");
8191#endif
8192#else
8193 fp = fopen(filename, "wb");
8194#endif
8195 if (!fp) {
8196 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
8197 err);
8198 return TINYEXR_ERROR_CANT_WRITE_FILE;
8199 }
8200
8201 unsigned char *mem = NULL;
8202 size_t mem_size = SaveEXRMultipartImageToMemory(exr_images, exr_headers, num_parts, &mem, err);
8203 if (mem_size == 0) {
8204 fclose(fp);
8205 return TINYEXR_ERROR_SERIALIZATION_FAILED;
8206 }
8207
8208 size_t written_size = 0;
8209 if ((mem_size > 0) && mem) {
8210 written_size = fwrite(mem, 1, mem_size, fp);
8211 }
8212 free(mem);
8213
8214 fclose(fp);
8215
8216 if (written_size != mem_size) {
8217 tinyexr::SetErrorMessage("Cannot write a file", err);
8218 return TINYEXR_ERROR_CANT_WRITE_FILE;
8219 }
8220
8221 return TINYEXR_SUCCESS;
8222}
8223
8224int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {

Callers

nothing calls this directly

Calls 4

SetErrorMessageFunction · 0.85
UTF8ToWcharFunction · 0.85
c_strMethod · 0.45

Tested by

no test coverage detected