c# - 如何在c#中转换大图像文件

标签 c#

我有几个大图像文件需要转换为不同的图像格式。我正在使用以下代码来执行此操作:

using (Image img =new Bitmap(inputImageName))
        {
            img.Save(outputImageName, imageFormat);
        } 

它进行对话,但由于图像很大,它会产生内存不足异常。我阅读了几篇关于如何克服 LOH 碎片化的文章,但在这种情况下我无法使用它们中的任何一篇。

我能做什么?

图片大约 100MByte,打开 3 或 4 张图片后会发生这种情况。

最佳答案

您在这里需要问的问题是“我必须在 .NET 和/或 C# 中执行此操作吗”

虽然我明白为什么对许多人来说像 C# 这样灵活的语言可能是执行许多任务的答案,但我也不得不说“当你只有一把锤子时,每个问题看起来都像钉子”

如果这是一次性转换,并且您只需要将它们用于一个项目,那么我对您的建议是使用更适合这项工作的独立工具。

有很多付费应用程序,例如:

AcdSee 照片管理器

http://www.acdsee.com/

免费工具,例如

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/

相关文章:

C# 枚举,双前枚举值

c# - 向 sqlparametercollection 提供输出参数导致错误 (Varbinary)

c# - 如何打开/关闭代码模块?

c# - 空路径名不合法

c# - Azure AD API 始终将 System.Security.Principal.GenericIdentity.IsAuthenticated 返回为 false

c# - 如何在方法之间传递数组?

c# - 在 Thread Local Storage/HttpContext Current Items 中存储数据

c# - IIS - 在不停机的情况下将绑定(bind)从一个站点更改为另一个站点

需要 C# 正则表达式

c# - ASP.Net MVC - 如何处理 JSON 操作中的异常(返回 JSON 错误信息),同时发布过滤器的异常?