当前位置: 首页 >>ASP.NET >>ASP.NET实战 >>生成图片 >>知道在C#中怎么上传图片又如何生成缩略图么?让我们一起来学习吧。

知道在C#中怎么上传图片又如何生成缩略图么?让我们一起来学习吧。

时间:2020/7/30 11:32:00 【admin】

知道在C#中怎么上传图片又如何生成缩略图么?让我们一起来学习吧。当源图片路径与缩略图路径一致时,生成的综合图将覆盖源图图。…

先引入以下的命名空间:

using System;

using System.Collections.Generic;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Web;


再调用下面的方法,当源图片路径与缩略图路径一致时,生成的综合图将覆盖源图图。

   Head = fi.upfileaddno("HeadF", UpWj.UpAllDir + PubFun.DrvGetAppVar("SUpDir"), UpWj.UpPhotoType, PubFun.DrvGetNum(PubFun.DrvGetAppVar("UpVideoSize")), "HE");

   UpFile.DoToMinPhoto(Server.MapPath(Head), Server.MapPath(Head), 500, 700, "W");


附加方法如下:

        /// <summary>

        /// 图片上传无提示,上传错误时返回空字符

        /// </summary>

        /// <param name="DonforFileMc">FORM表单中图片控件的名称</param>

        /// <param name="DonforFileMl">图片在服务器的保存目录</param>

        /// <param name="DonforFileLx">图片的类型</param>

        /// <param name="DonforFileDx">图片的大小</param>

        /// <param name="AppointImgName">图片指定的新文件名,未填写用年月日时分秒来做文件名</param>

        /// <param name="IsName">是否起用指定的新文件名,当“IsName”值为0时,“AppointImgName”的值为文件名的前缀,当“IsName”不为0时,“AppointImgName”为图片的指定文件名。</param>

        /// <returns>返回新文件名的相对路径</returns>


        public string HdhCmsUpOnePhoto(string DonforFileMc, string DonforFileMl, string DonforFileLx, float DonforFileDx, string AppointImgName="",int IsName=0)

        {

            string filepath = System.Web.HttpContext.Current.Server.MapPath(DonforFileMl);

            string filewjm, filekzm, file_ext, ext, DonforUpFileDir, fpath, sPath2;

            float filesize;

            AllCw AllCw = new AllCw();

            DonforUpFileDir = "";

            HttpPostedFile userPostedFile = System.Web.HttpContext.Current.Request.Files[DonforFileMc];

            if (userPostedFile.ContentLength > 0)

            {

                string file_name = "";

                if (IsName == 0)

                {

                    file_name = AppointImgName + System.DateTime.Now.ToString("yyyyMMddHHmmss"); //新文件名

                }

                else {

                    file_name = AppointImgName; //新文件名

                }

                //string sPath = System.DateTime.Now.ToString("yyyyMMdd"); //创建日期文件夹

                filewjm = Path.GetFileName(userPostedFile.FileName);

                filekzm = filewjm.Substring(filewjm.LastIndexOf(".") + 1).ToLower();

                file_ext = filekzm;

                ext = userPostedFile.ContentType.ToLower(); //获取文件类型

                filekzm = filewjm.Substring(filewjm.LastIndexOf(".") + 1).ToLower();

                filesize = userPostedFile.ContentLength;

                if (DonforFileDx < filesize) { DonforUpFileDir = null; }

                else

                {

                    if (DonforFileLx.IndexOf(ext) >= 0 && DonforFileLx.IndexOf(filekzm) >= 0)

                    {

                        sPath2 = filepath ;

                        if (!Directory.Exists(sPath2)) //判断日期文件夹是否存在

                        {

                            Directory.CreateDirectory(sPath2);//创建日期文件夹

                        }

                        fpath = filepath  + "\\" + file_name + "." + file_ext;

                        DonforUpFileDir = DonforFileMl + "/" + file_name + "." + file_ext;


                        //判断是否属于自定义文件名

                        #region 禁止文件名出现重复

                        if (IsName == 0)

                        {

                            fpath = RandomNames(fpath);

                        }

                        else

                        {

                            #region 判断文件是否存在

                            String MapPath = HttpContext.Current.Server.MapPath("/");

                            if (fpath != null && System.IO.File.Exists(MapPath + fpath))

                            {

                                try

                                {

                                    if (fpath.IndexOf(MapPath + fpath) == -1)

                                    {

                                        System.IO.File.Delete(MapPath + fpath);

                                    }

                                }

                                catch (Exception) { }

                            }

                            #endregion

                        } 

                        #endregion

                       



                        userPostedFile.SaveAs(fpath);

                    }

                    else

                    {

                        DonforUpFileDir = null;

                    }

                }

            }

            //DonforUpFileDir = DonforUpFileDir.Replace(UpWj.UpWj_Djml, "");

            return DonforUpFileDir;

        }



        // 生成缩略图                    源图路径(物理路径)   缩略图路径(物理路径) 缩略图宽度 缩略图高度  生成缩略图的方式

        public static void HdhCmsUpPhotoChangeSize(string originalImagePath, string thumbnailPath, int width, int height, string mode)

        {

            System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);


            int towidth = width;

            int toheight = height;

            int x = 0;

            int y = 0;

            int ow = originalImage.Width;

            int oh = originalImage.Height;

            if (ow > width || oh > height)

            {

                switch (mode)

                {

                    case "HW"://指定高宽缩放(可能变形) 

                        break;

                    case "W"://指定宽,高按比例 

                        toheight = originalImage.Height * width / originalImage.Width;

                        break;

                    case "H"://指定高,宽按比例

                        towidth = originalImage.Width * height / originalImage.Height;

                        break;

                    case "Cut"://指定高宽裁减(不变形) 

                        if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)

                        {

                            oh = originalImage.Height;

                            ow = originalImage.Height * towidth / toheight;

                            y = 0;

                            x = (originalImage.Width - ow) / 2;

                        }

                        else

                        {

                            ow = originalImage.Width;

                            oh = originalImage.Width * height / towidth;

                            x = 0;

                            y = (originalImage.Height - oh) / 2;

                        }

                        break;

                    default:

                        break;

                }


                //新建一个bmp图片

                System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);


                //新建一个画板

                Graphics g = System.Drawing.Graphics.FromImage(bitmap);


                //设置高质量插值法

                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;


                //设置高质量,低速度呈现平滑程度

                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;


                //清空画布并以透明背景色填充

                g.Clear(Color.White);


                //在指定位置并且按指定大小绘制原图片的指定部分

                g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),

                new Rectangle(x, y, ow, oh),

                GraphicsUnit.Pixel);

                try

                {

                    //以jpg格式保存缩略图

                    bitmap.Save(thumbnailPath + "T", System.Drawing.Imaging.ImageFormat.Jpeg);

                }

                catch (System.Exception e)

                {

                    throw e;

                }

                finally

                {

                    originalImage.Dispose();

                    bitmap.Dispose();

                    g.Dispose();


                    if (System.IO.File.Exists(thumbnailPath + "T"))

                    {

                        if (originalImagePath.Equals(thumbnailPath))

                        {

                            if (originalImagePath.IndexOf("defaultHead.jpg") == -1)

                            {

                                System.IO.File.Delete(originalImagePath);

                            }

                        }

                        System.IO.File.Move(thumbnailPath + "T", thumbnailPath);

                    }

                }

            }

        }


相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com

分享按钮