我有几个大图像文件需要转换为不同的图像格式。我正在使用以下代码来执行此操作:
using (Image img =new Bitmap(inputImageName))
{
img.Save(outputImageName, imageFormat);
}
它进行对话,但由于图像很大,它会产生内存不足异常。我阅读了几篇关于如何克服 LOH 碎片化的文章,但在这种情况下我无法使用它们中的任何一篇。
我能做什么?
图片大约 100MByte,打开 3 或 4 张图片后会发生这种情况。
最佳答案
您在这里需要问的问题是“我必须在 .NET 和/或 C# 中执行此操作吗”
虽然我明白为什么对许多人来说像 C# 这样灵活的语言可能是执行许多任务的答案,但我也不得不说“当你只有一把锤子时,每个问题看起来都像钉子”
如果这是一次性转换,并且您只需要将它们用于一个项目,那么我对您的建议是使用更适合这项工作的独立工具。
有很多付费应用程序,例如:
AcdSee 照片管理器
免费工具,例如
Ifran View及其图片转换功能
http://www.bleepingcomputer.com/forums/topic50519.html
如果命令行脚本是您的游戏,那么请使用 ImageMagik 等工具集:
http://www.imagemagick.org/script/index.php
Iamage Magik 还具有 .NET 绑定(bind),因此它的功能可以在 .NET 项目以及许多其他项目中使用,如果您的项目需要您在程序代码中即时转换这些项目的话。
http://www.imagemagick.org/script/api.php
对于像这样的场景,真的没有理由重新发明轮子,这个问题之前已经解决了很多次,所以这真的不是你应该做出的决定。
关于c# - 如何在c#中转换大图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400630/