http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 21839|回复: 2

[Asp.Net] 今天解决了一个图片缩略图报“A generic error occurred in GDI+”错误的问题

[复制链接]
发表于 2013-8-14 08:46:29 | 显示全部楼层 |阅读模式
      今天解决了一个图片缩略图报“A generic error occurred in GDI+”错误的问题
今天写了一个关于生成缩略图片的功能
方法如下
[C#] 纯文本查看 复制代码
/// <summary>
    /// 得到图片缩略图
    /// </summary>
    /// <param name="img">图片对象</param>
    /// <param name="maxWidth">最大宽度</param>
    /// <param name="maxHeight">最大高度</param>
    /// <returns></returns>
    public static System.Drawing.Image GetThumbImage(System.Drawing.Image img, int maxWidth, int maxHeight, bool isBlock, out float size)
    {
        int tWidth;
        int tHeight;
        size = 1;

        if (!isBlock)
        {
            tWidth = maxWidth;
            tHeight = maxHeight;
        }
        else
        {
            if (!(maxHeight > img.Height && maxWidth > img.Width))
            {
                float HeightMultipier = (float)maxHeight / (float)img.Height;
                float WidthMultipier = (float)maxWidth / (float)img.Width;
                if (HeightMultipier > 1) HeightMultipier = 1;
                if (WidthMultipier > 1) WidthMultipier = 1;
                float SizeMultiplier = WidthMultipier < HeightMultipier ? WidthMultipier : HeightMultipier;
                size = SizeMultiplier;
                tWidth = (int)(img.Width * SizeMultiplier);
                tHeight = (int)(img.Height * SizeMultiplier);
            }
            else
            {
                tWidth = img.Width;
                tHeight = img.Height;
            }
        }
        System.Drawing.Image bitmap = new System.Drawing.Bitmap(tWidth, tHeight);
        //新建一个画板
        Graphics g = System.Drawing.Graphics.FromImage(bitmap);
        //设置高质量插值法
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
        //设置高质量,低速度呈现平滑程度
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //清空画布并以透明背景色填充
        g.Clear(Color.Transparent);
        //在指定位置并且按指定大小绘制原图片的指定部分
        g.DrawImage(img, new Rectangle(0, 0, tWidth, tHeight),
            new Rectangle(0, 0, img.Width, img.Height),
            GraphicsUnit.Pixel);
        return bitmap;
    }

在本地测试的好好的,上传到服务器就出问题,
错误如下

A generic error occurred in GDI+

A generic error occurred in GDI+

就是在调用这个方法时报这个问题
而且是一台服务器有问题一台没有问题,
我细看了下服务器一个是iis7另一个是IIS6,难道是IIS兼容性的问题
于是我将代码修改如下
[C#] 纯文本查看 复制代码
using (System.Drawing.Image originalImage = System.Drawing.Image.FromStream(file.InputStream))
        {
            System.Drawing.Image.GetThumbnailImageAbort callback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
            originalImage.GetThumbnailImage(497, 367, callback, IntPtr.Zero).Save(filePath);
        }

    }
    public bool ThumbnailCallback()
    {
        return false;
    }

不过还是问题依旧,依然是报这样的错误
会不会是位图的问题我查看了MSn的文章http://support.microsoft.com/?id=814675
修改之后还是这样的问题
这时我想到有可能不是代码的问题了。
我到文件所在的服务器上查看了一下目录的权限,我靠原是来目录权限问题
设置用户everyone的读写权限就可以的。大家如果有这种要先检查下是不是权限问题哦,不要忙着修改别的代码,像我一样忙了半天没找到问题所在,呵呵



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-16 08:56:08 | 显示全部楼层
受教
回复

使用道具 举报

发表于 2016-10-5 01:29:45 | 显示全部楼层
试了,不是权限问题。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-8 16:50

© 2014-2021

快速回复 返回顶部 返回列表