上传图片并且生成可以控制大小图片清晰度的方法

上传图片并且生成可以控制大小图片清晰度的方法
private void Upload_Click(object sender, System.EventArgs e)
        {
            if(myFile.PostedFile !=null)
            {
                // 检查文件扩展名字
                HttpFileCollection files  = HttpContext.Current.Request.Files;
                HttpPostedFile postedFile = files[0];
                string fileName,fileExtension,file_id,file_path;
                //取出精确到毫秒的时间做文件的名称
                int year = System.DateTime.Now.Year;
                int month = System.DateTime.Now.Month;
                int day = System.DateTime.Now.Day;
                int hour = System.DateTime.Now.Hour;
                int minute = System.DateTime.Now.Minute;
                int second = System.DateTime.Now.Second;
                int millisecond = System.DateTime.Now.Millisecond;
                string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString();

                //获得文件类型
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                fileExtension = System.IO.Path.GetExtension(fileName);

                //重新命名文件,防止重复
                file_id = "topnews_"+my_file_id+fileExtension;
                file_path = "images/article_images/"+file_id;

                //文件上传到服务器的根目录
                postedFile.SaveAs(Request.PhysicalApplicationPath+@"images/article_images/"+ file_id);

                //处理图片大小
                int width,height,level;
                width=120;
                height=90;
                level=100;//从1-100
                GetThumbnailImage(width,height,level,file_id);
            }
        }

        //生成缩略图函数
        public void GetThumbnailImage(int width,int height,int level,string file_id)
        {
            string newfile= Request.PhysicalApplicationPath+"images/article_images/"+"top_"+ file_id;
            System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
            System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(width, height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
            Bitmap output=new Bitmap(thumbnailImage);

            //处理JPG质量的函数
            ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders();
            ImageCodecInfo ici=null;
            foreach(ImageCodecInfo codec in codecs){if(codec.MimeType=="image/jpeg")ici=codec;}
            EncoderParameters ep=new EncoderParameters();
            ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)level);
            output.Save(newfile,ici,ep);

            //释放所有使用对象
            ep.Dispose();
            output.Dispose();
            oldimage.Dispose();
            thumbnailImage.Dispose();

            //删除源图片
            string file_path = "images/article_images/"+"top_"+file_id;
            usageIO.DeletePath(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
            Response.Write("<script >parent.Form1.A_Simg.value ='"+file_path+"';location.replace('Upload_Img.aspx')</script>");
        }

        bool ThumbnailCallback()
        {
            return false;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值