zoukankan      html  css  js  c++  java
  • asp.net上传图片压缩

    转自csdn论坛,正确已经测试,非常好用。只不过引用的时候有点问题,图片没有释放,见下面红字部分。
    我抄一份代码给你,清清月儿的.  
    using System;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;

    public class ImageThumbnail
    {
       
    public Image ResourceImage;
       
    private int ImageWidth;
       
    private int ImageHeight;
       
    public string ErrorMessage;

       
    public ImageThumbnail(string ImageFileName)
        {
            ResourceImage
    = Image.FromFile(ImageFileName);
            ErrorMessage
    = "";
        }

       
    public bool ThumbnailCallback()
        {
           
    return false;
        }


       
    // 方法1,按大小
        public bool ReducedImage(int Width, int Height, string targetFilePath)
        {
           
    try
            {
                Image ReducedImage;
                Image.GetThumbnailImageAbort callb
    = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                ReducedImage
    = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
                ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
                ReducedImage.Dispose();
               
    return true;
            }
           
    catch (Exception e)
            {
                ErrorMessage
    = e.Message;
               
    return false;
            }
        }


       
    // 方法2,按百分比  缩小60% Percent为0.6 targetFilePath为目标路径
        public bool ReducedImage(double Percent, string targetFilePath)
        {
           
    try
            {
                Image ReducedImage;
                Image.GetThumbnailImageAbort callb
    = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                ImageWidth
    = Convert.ToInt32(ResourceImage.Width * Percent);
                ImageHeight
    = (ResourceImage.Height)*ImageWidth/ ResourceImage.Width;//等比例缩放
                ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
                ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
                ReducedImage.Dispose();
               
    return true;
            }
           
    catch (Exception e)
            {
                ErrorMessage
    = e.Message;
               
    return false;
            }
        }


    }

    后台代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public partial class _Default : System.Web.UI.Page
    {

       
    protected void Page_Load(object sender, EventArgs e)
        {

        }
       
    protected void bt_upload_Click(object sender, EventArgs e)
        {
           
    try
            {
               
    if (FileUpload1.PostedFile.FileName == "")
                {
                   
    this.lb_info.Text = "请选择文件!";
                }
               
    else
                {
                   
    string filepath = FileUpload1.PostedFile.FileName;
                   
    string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
                   
    string serverpath1 = Server.MapPath("images/") + filename;
                   
    string serverpath2 = Server.MapPath("images/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;
                    FileUpload1.PostedFile.SaveAs(serverpath1);
                    ImageThumbnail img
    = new ImageThumbnail(filepath);
                    img.ReducedImage(
    0.4, serverpath2);//0.4表示缩小40%
                    img.ResourceImage.Dispose(); //这里要释放一下
                    this.lb_info.Text = "上传成功!";
                }
            }
           
    catch (Exception error)
            {
               
    this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
            }
        }


    }

  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/fogwang/p/2666580.html
Copyright © 2011-2022 走看看