相关疑难解决方法(0)

GDI +,JPEG Image to MemoryStream中发生一般错误

这似乎是整个网络上一个臭名昭着的错误.因为我的情景不适合,所以我无法找到问题的答案.将图像保存到流时会抛出异常.

奇怪的是这与png完美配合,但是jpg和gif给出了上述错误,这是相当混乱的.

最相似的问题涉及将图像保存到没有权限的文件.具有讽刺意味的是,解决方案是使用内存流,因为我正在做....

public static byte[] ConvertImageToByteArray(Image imageToConvert)
{
    using (var ms = new MemoryStream())
    {
        ImageFormat format;
        switch (imageToConvert.MimeType())
        {
            case "image/png":
                format = ImageFormat.Png;
                break;
            case "image/gif":
                format = ImageFormat.Gif;
                break;
            default:
                format = ImageFormat.Jpeg;
                break;
        }

        imageToConvert.Save(ms, format);
        return ms.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

更多细节到例外.造成这么多问题的原因是缺乏解释:(

System.Runtime.InteropServices.ExternalException was unhandled by user code
Message="A generic error occurred in GDI+."
Source="System.Drawing"
ErrorCode=-2147467259
StackTrace:
   at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters    encoderParams)
   at System.Drawing.Image.Save(Stream stream, ImageFormat format)
   at Caldoo.Infrastructure.PhotoEditor.ConvertImageToByteArray(Image imageToConvert) in C:\Users\Ian\SVN\Caldoo\Caldoo.Coordinator\PhotoEditor.cs:line 139
   at …
Run Code Online (Sandbox Code Playgroud)

c# gdi+

314
推荐指数
16
解决办法
45万
查看次数

C#:GDI +:使用位图的保存方法过度写入图像

我有一个ASP.NET C#页面,我正在调整文件夹中的图像.我正在使用GDI +来执行此操作.我想调整图像大小并替换旧图像.所以当我尝试使用现有名称保存时,Save方法抛出一个错误.但是,如果我给出一个不同的名称,它将被保存.但我想为新创建的已调整大小的图像具有相同的文件名,因为我需要使用调整大小的新文件覆盖现有文件.知道如何继续.我的代码是

     oldImagePath= oldImagePath.Replace(".jpg", "NEW.jpg");

        try
        {
            ImageCodecInfo[] Info = ImageCodecInfo.GetImageEncoders();
            EncoderParameters Params = new EncoderParameters(1);
            Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
            target.Save(oldImagePath, Info[1], Params);
        }
Run Code Online (Sandbox Code Playgroud)

如果我评论第一行为目标文件创建一个新名称,IT将无法正常工作.,其他人会想到它.但我想拥有相同的名称.任何想法??提前致谢

asp.net gdi+

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

gdi+ ×2

asp.net ×1

c# ×1