一个可以使得上传的图片大小按照指定的宽度,高度自动按比例进行缩放的函数(C#)

本文介绍了一种图片上传的方法,该方法可以根据指定的宽度和高度自动调整图片大小,并允许设置JPEG图片的压缩比。

一个可以使得上传的图片大小按照指定的宽度,高度自动按比例进行缩放

,生成的JPG还可以指定其图片的压缩比。很实用。

public string upimgscalesave(HttpPostedFile UpFile,string id,int imgw,string bcwz)

//UpFile HtmlInputFile控件类

//id 上传后保存的文件名

//改变的图片宽度,高度吗,当然是自动计算拉!

//bcwz上传后要存服务器那里啊!


   {
    int FileLength;
    int imgh=0;
    FileLength = UpFile.ContentLength; //记录文件长度

    if (FileLength == 0)
    { //文件长度为零时
     return "null";
    }
    else
    {
     Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
     Stream StreamObject = UpFile.InputStream; //建立数据流对像
     StreamObject.Read(FileByteArray,0,FileLength);
     System.Drawing.Image orimg=System.Drawing.Image.FromStream(StreamObject);
    
    
     string mimeType ="image/jpeg";
     ImageCodecInfo[] encoders;
     encoders = ImageCodecInfo.GetImageEncoders();
     for(int j = 0; j < encoders.Length; ++j)
     {
       if(encoders[j].MimeType == mimeType)
       myImageCodecInfo=encoders[j];
     }


     System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
     myEncoderParameters = new EncoderParameters(1);
     myEncoderParameter = new EncoderParameter(myEncoder, 80L);

//80L压缩比拉

     myEncoderParameters.Param[0] = myEncoderParameter;
    
    
     if(imgw==0&&imgh==0)
     {
     
     
     
      orimg.Save(bcwz+"//"+id+".jpg",myImageCodecInfo,myEncoderParameters);
    
     
     
      //orimg.Save(bcwz+"//"+id+".jpg",ImageFormat.Jpeg);
      orimg.Dispose();
     
     }
     else
     {
      double bl=0.0F;
      bl=imgw/Convert.ToDouble(orimg.Width);
      imgh=Convert.ToInt32(orimg.Height*bl);
      b = new Bitmap(imgw,imgh);
      g = Graphics.FromImage(b);  
      Rectangle destRect1 = new Rectangle( 0, 0, imgw, imgh);
      //GraphicsUnit units = GraphicsUnit.Pixel;
      g.DrawImage(orimg,destRect1);
      b.Save(bcwz+"//"+id+".jpg",myImageCodecInfo,myEncoderParameters);
      b.Dispose();
      g.Dispose();
      orimg.Dispose();

     }
     return bcwz;
    }
   }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值