我有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/