将位图保存到加载它的文件中
Save Bitmap to same file it was loaded from
我试图将位图保存到我加载它的相同文件。然而,我不能这样做。我知道.save()函数的文档说"不要将图像保存到用于构造图像的同一流"。这样做可能会破坏流",并认为这是我的问题的原因。例如,如果我加载图像"a.jpg",我无法将修改后的文件保存回"a.jpg",我必须更改文件名。
这是我加载图像的代码:
std::string fullPath = imgFolderPath + "\" + imageFileNames[i];
std::wstring wstr(fullPath.begin(), fullPath.end());
Bitmap* bitmap = new Bitmap(wstr.c_str());
和我保存图像的代码是:
bitmap->Save(wstr.c_str(), &clsid, NULL);
当文件名不同时可以正常工作。有没有一种方法可以写入相同的图像?我宁愿"更新"图像,而不是创建一个新的图像。
只要将图像存储到缓冲区中,为什么不直接删除图像,例如'system("rm foo.png")',然后再写入?
你不能只是关闭现有的位图流,然后打开一个新的写入相同的文件名?这将覆盖原始图像。
我在GDI+文档的Community Additions部分看到jlpilkin建议不要直接从文件中创建位图。相反,将文件读入内存缓冲区,创建内存流,然后从内存流创建位图。一旦位图被创建,你就可以释放内存流和内存缓冲区。现在你有一个位图,没有保持原始文件打开。
然后将修改后的位图保存到一个临时名称中,并使用ReplaceFile自动将其移动到原始文件名中,保留原始文件的属性。
相关文章:
- 将 bmp 文件加载到 TSpeedButton 中
- 如何将文本文件加载到 QListwidget 并将其保存回来
- 从 C 可执行文件加载动态库时收到错误C++"undefined symbol"
- 优化从文件加载QImage
- 将csv文件加载到MySQL C++中
- 从文件加载结构
- 如何在 QT 中显示文件加载状态
- C++ 如何从文件加载异类集合
- 从文本文件加载链表并打印时无限循环
- Kotlin 从文件加载类的集合?
- 如何从文件加载QJsonDocument
- SFML 将图像从 txt 文件加载到矢量中仅加载最后一个图像
- 使用ifstream从DAT文件加载数据
- 从 C 中的文件加载结构时出现分段错误
- 从二进制文件加载列表后,我的代码似乎进入了无限循环
- Qml:从文件加载组件时将参数作为 URL 的一部分传递
- 将浮点数保存在文本文件中,然后从文本文件加载回去(OpenGL和C++)
- 从TXT文件加载迷宫
- 从文件加载uint64_t值
- 如何在 c++ 中将二进制文件加载/读取到"vector<vector< bitset<32> >"中?