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

来源:互联网 发布:ppt怎么做数据分析 编辑:程序博客网 时间:2024/06/05 17:35
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;
        }

原创粉丝点击