zoukankan      html  css  js  c++  java
  • .net 操作图片类

     public class ImgHelp
        {
            //public static string gif = "image/gif";
            //public static string jpg = "image/pjpeg";
            //public static string png = "image/x-png";
            Page pag = new Page();
            string[] Imgtype = { "image/gif", "image/pjpeg", "image/x-png" };
            public static string thisYear = DateTime.Now.Year.ToString();
            public static string thisMonth = DateTime.Now.Month.ToString();
            public static string thisDay = DateTime.Now.Day.ToString();
            string strDate = thisYear + thisMonth + thisDay + DateTime.Now.Hour.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Millisecond.ToString();

            /// <summary>
            /// 保存上传的文件返回true为保存成功Massage为文件路径,返回false为保存失败Massage错误信息
            /// </summary>
            /// <param name="ProducFile"></param>
            /// <param name="size">允许上传的最大值(以字节为单位)</param>
            /// <param name="addurl">存储路径</param>
            /// <param name="Massage">存储信息</param>
            /// <returns></returns>
            public bool UpImg(FileUpload ProducFile, int size, string addurl, out string Massage)
            {
                string mag;
                bool su = false;
                int i = ThrowImg(ProducFile, size, out mag);
                if (i == 1)
                {
                    //新文件名
                    string NewFileName = strDate + ProducFile.FileName.Replace("~", "").Replace("|", "").Replace("&", "");
                    string url = addurl;
                    string PddUrl = pag.Server.MapPath(url);
                    try
                    {
                        if (!Directory.Exists(PddUrl))
                        {
                            Directory.CreateDirectory(PddUrl);
                        }                  
                        if (File.Exists(pag.Server.MapPath(url + NewFileName)) == false)
                        {
                            ProducFile.SaveAs(pag.Server.MapPath(url + NewFileName));
                            Massage = url + NewFileName;
                            su = true;
                        }
                        else
                        {
                           Massage = "上传文件名已经存在,请重新上传!";                          
                        }
                      
                    }
                    catch
                    {
                        Massage = "文件上传时程序出现异常,请重新上传!";                   
                    }
                }
                else
                {
                    Massage = mag;
                }
                return su;

            }


            /// <summary>
            /// 上传图片关生成 缩略图
            /// </summary>
            /// <param name="ProducFile">控件</param>
            /// <param name="size">允许上传的最大值(以字节为单位)</param>
            /// <param name="addurl">存储路径</param>
            /// <param name="frontName">保存文件前缀名集合</param>
            /// <param name="ImgWid">,宽度集合</param>
            /// <param name="ImgHid">高度集合</param>
            /// <param name="Massage">返回上传信息</param>
            /// <returns></returns>
            public bool UpImgAndBreviary(FileUpload ProducFile, int size, string addurl,string[] frontName,int[] ImgWid,int[] ImgHid,out string Massage)
            {
                string mag;
                bool key = false;
                int i = ThrowImg(ProducFile, size, out mag);
                if (i != 1)
                {
                    Massage = mag;
                    key = false;

                   
                }
                else if (frontName.Length <= 0 || frontName.Length != ImgWid.Length || frontName.Length != ImgHid.Length)
                {
                    Massage = "缩略图信息不相符";
                    key = false;
                }
                else
                {
                    //新文件名
                    string NewFileName = "primary_" + strDate + ProducFile.FileName.Replace("primary_", "");
                    //存储路径
                    string url = addurl + thisYear + "/" + thisMonth + "/" + thisDay;
                    //转为服务器的绝对路径
                    string PddUrl = pag.Server.MapPath(url);

                    try
                    {
                        //判断路径目录是否存在
                        if (!Directory.Exists(PddUrl))
                        {
                            //创建目录
                            Directory.CreateDirectory(PddUrl);
                            if (File.Exists(pag.Server.MapPath(url + "/" + NewFileName)) == false)
                            {
                                //保存文件
                                ProducFile.SaveAs(pag.Server.MapPath(url + "/" + NewFileName));
                                //返回文件地址
                                Massage = url + "/" + NewFileName;

                                //生成缩略图
                                for (int j = 0; j < frontName.Length; j++)
                                {
                                    BreviaryImg(Massage, Massage.Replace("primary_", frontName[j]), ImgWid[j], ImgHid[j]);
                                }
                                key = true;

                                //生成两张缩略图,保存名是在原图名前加了一个middle_,small_。
                                //newwidth1 = 200;
                                //newheight1 = 200;
                                //newwidth2 = 60;
                                //newheight2 = 60;
                                //BreviaryImg(Massage, Massage.Replace("primary_", "middle_"), newwidth1, newheight1);
                                //BreviaryImg(Massage, Massage.Replace("primary_", "small_"), newwidth2, newheight2);                      

                            }
                            else
                            {
                                Massage = "上传文件重名,请重新上传!";
                                key = false;
                            }
                        }
                        else
                        {
                            if (File.Exists(pag.Server.MapPath(url + "/" + NewFileName)) == false)
                            {
                                //保存文件
                                ProducFile.SaveAs(pag.Server.MapPath(url + "/" + NewFileName));
                                //返回保存地址
                                Massage = url + "/" + NewFileName;

                                //生成缩略图。
                                for (int j = 0; j < frontName.Length; j++)
                                {
                                    BreviaryImg(Massage, Massage.Replace("primary_", frontName[j]), ImgWid[j], ImgHid[j]);
                                }
                                key = true;

                            }
                            else
                            {
                                Massage = "上传文件名已经存在,请重新上传!";
                                key = false;
                            }
                        }
                    }
                    catch
                    {
                        Massage = "文件上传时出现程序错误,请重新上传!";
                        key = false;
                    }

                }                             
             
                return key;

            }


            /// <summary>
            /// 检测上传文件
            /// </summary>
            /// <param name="ProducFile"></param>
            /// <param name="Size">允许上传最大值</param>
            /// <param name="Massage">检测信息</param>
            /// <returns></returns>   
            private int ThrowImg(FileUpload ProducFile, int Size, out string Massage)
            {
                int i = 0;

                Boolean ImgOK = false;
                if (ProducFile.HasFile)
                {
                    //图片类型集
                    string[] ImgExtension = { ".gif", ".jpg", ".jpeg", ".png" };
                    //文件类型
                    string FileType = ProducFile.PostedFile.ContentType;
                    //文件扩展名
                    string FileExType = Path.GetExtension(ProducFile.FileName).ToLower();
                    //匹配类型
                    for (int k = 0; k < ImgExtension.Length; k++)
                    {
                        if (FileExType == ImgExtension[k])
                        {
                            foreach (string type in Imgtype)
                            {
                                if (FileType == type)
                                {
                                    ImgOK = true;
                                    break;
                                }
                            }
                        }
                    }
                    if (ImgOK == true)
                    {
                        //获取文件大小
                        int FileSize = ProducFile.PostedFile.ContentLength;
                        if (FileSize < Size)
                        {
                            i = 1;
                            Massage = "";
                        }
                        else
                        {
                            Massage = "上传文件过大!";
                            i = 0;
                        }
                    }
                    else
                    {
                        Massage = "上传的文件的格式不合法!";
                        i = 0;
                    }
                }
                else
                {
                    Massage = "请选择正确的文件路径!";
                    i = 0;
                }
                return i;

            }


            /// <summary>
            /// 生成缩缩略图
            /// </summary>
            /// <param name="imagePath">原图路径</param>
            /// <param name="savePath">缩略图存储路径</param>
            /// <param name="wid">缩略图宽</param>
            /// <param name="hid">缩略图高</param>
            private void BreviaryImg(string imagePath, string savePath, int wid, int hid)
            {
                string originalImagePath = pag.Server.MapPath(imagePath);
                string thumbnailPath = pag.Server.MapPath(savePath);
                System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
                //int towidth = wid;
                //int toheight = hid;

                int x = 0;
                int y = 0;
                int ow = originalImage.Width;
                int oh = originalImage.Height;
             
                //新建一个bmp图片
                System.Drawing.Image bitmap = new System.Drawing.Bitmap(wid, hid);

                //新建一个画板
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

                //设置高质量插值法
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;                                 

                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                //清空画布并以透明背景色填充
                g.Clear(System.Drawing.Color.Transparent);

                //在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, wid, hid), new System.Drawing.Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel);

                try
                {

                    //以原格式保存缩略图
                    bitmap.Save(thumbnailPath, originalImage.RawFormat);
                }
                catch (System.Exception e)
                {
                    throw e;
                }
                finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
        }

  • 相关阅读:
    Java并发编程:volatile关键字解析(转)
    Java并发编程 Synchronized及其实现原理
    (a++)+(++a)=?
    Java集合中那些类是线程安全的
    Servlet 与 CGI 的比较
    JAVA中常见的锁以及其特性
    总结一下hashMap和hashtable方面的知识点
    Which statement is true?
    下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
    Kafka 详解(转)
  • 原文地址:https://www.cnblogs.com/zhang9418hn/p/2015507.html
Copyright © 2011-2022 走看看