日期:2014-05-17  浏览次数:20355 次

做网站用户上传图片,大像素时上传后保存在images文件夹,我可以指定100*100显示,可是当要导出图片,我是通过地址去images读,图片又变成很大的?
做网站用户上传图片,大像素时上传后保存在images文件夹,我可以指定100*100显示,可是当要导出图片,我是通过地址去images读,图片又变成很大的?
请问有什么解决方案??

------解决方案--------------------
你用放大镜看完东西 东西会变大吗?
------解决方案--------------------
你那个是设定浏览器显示大小,不是真正的缩略图,解决的办法是在上传图片 aaa.jpg 后不但存一个 aaa.jpg 原图,还要存一个真实的100*100的aaa_s.jpg的缩略图。关于图片如何生成缩略图的代码摆渡即可,太多了。
------解决方案--------------------
C# code

    /// <summary>
    /// 重新生成特定大小的图像
    /// </summary>
    /// <param name="fileName">原图路径</param>
    /// <param name="path">保存路径</param>
    /// <param name="height">要生成的高</param>
    /// <param name="width">要生成的宽</param>
    void bmpSave(string fileName, string path, int height, int width)
    {
        //装载图片
        System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);
        //获取图片的实际宽度与高度
        int srcWidth = image.Width;
        int srcHeight = image.Height;
        if (height != 0 || width != 0)
        {
            //创建Bitmap对象,并设置Bitmap的宽度和高度。
            Bitmap bmp = new Bitmap(width, height);
            //从Bitmap创建一个System.Drawing.Graphics对象,用来绘制高质量的缩小图。
            System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
            //设置 System.Drawing.Graphics对象的SmoothingMode属性为HighQuality
            gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            //下面这个也设成高质量
            gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            //下面这个设成High
            gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
            //把原始图像绘制成上面所设置宽高的缩小图
            System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, width, height);
            //暂不理解
            gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel);
            bmp.Save(path, System.Drawing.Imaging.ImageFormat.Bmp);
            image.Dispose();
        }
    }

------解决方案--------------------
1、自动缩放
2、限定上传尺寸
3、显示时限制显示大小