c# - 如何让 .NET 保存此图像?

标签 c# .net image

我有this JPEG image ,在 Picasa、Photoshop、网络浏览器等中打开良好,但在 .NET 中它只是拒绝工作。

 Image image = Image.FromFile(@"myimage.jpg");
 image.Save(@"myimage2.jpg");
 // ExternalException - A generic error occurred in GDI+.

有没有办法在 .NET 中恢复它以便我可以使用它(我需要调整它的大小),而无需从源头上解决问题?

完整的异常详细信息:

source: System.Drawing
type: System.Runtime.InteropServices.ExternalException
message: A generic error occurred in GDI+.
stack trace:
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
   at System.Drawing.Image.Save(String filename, ImageFormat format)
   at System.Drawing.Image.Save(String filename)
   at ConsoleApplication20.Program.Main(String[] args) in C:\Users\sam\Desktop\S
ource\ConsoleApplication20\ConsoleApplication20\Program.cs:line 16

此问题可在 Windows 7 上重现。

最佳答案

这似乎可行:

    using (Image image = Image.FromFile(@"c:\dump\myimage.jpg"))
    using (Image clone = new Bitmap(image))
    {
        clone.Save(@"c:\dump\myimage2.jpg", ImageFormat.Jpeg);
    }

image 反正就是一个Bitmap,应该差不多吧。奇怪的是 myimage2 小了 5k - jpeg 的乐趣;-p

这样做的好处是您可以同时调整大小(您的实际意图):

    using (Image image = Image.FromFile(@"c:\dump\myimage.jpg"))
    using (Image clone = new Bitmap(image,
        new Size(image.Size.Width / 2, image.Size.Height / 2)))
    {

        clone.Save(@"c:\dump\myimage2.jpg", ImageFormat.Jpeg);
    }

关于c# - 如何让 .NET 保存此图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340337/

相关文章:

c# - 使用 asp.net web api 进行部分更新

c# - 使用为其 ListBox 定义的 GroupStyle 删除 WPF ListBoxItem 的左填充

c# - 如何保存复选框的状态

c# - SpecFlow 在短语 "I should"方面有问题吗

javascript - 如何在没有 javascript 和 Ajax 的情况下从 MVC4 C# 获取 json

c# - Json.NET SerializeObject 转义值以防止 XSS

javascript - 在 TreeView 中选择父节点时如何选择所有子节点? (当从用户控件使用 TreeView 时)

jquery - 在将图像 append 到 DOM/浏览器之前,如何获取图像的宽度/高度?

css - 使用 aspnet 图像框架的 css 中的 Sprite

r - 如何在 R 中导入多个 jpeg 图像