圖片上傳代碼(C#)

//上傳      web

protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string fileContentType = FileUpload1.PostedFile.ContentType;
                if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")
                {
                    string name = FileUpload1.PostedFile.FileName;                  // 客戶端文件路徑服務器

                    FileInfo file = new FileInfo(name);
                    string fileName = file.Name;                                    // 文件名稱
                    string fileName_s = "x_" + file.Name;                           // 縮略圖文件名稱
                    string fileName_sy = "text_" + file.Name;                         // 水印圖文件名稱(文字)
                    string fileName_syp = "water_" + file.Name;                       // 水印圖文件名稱(圖片)
                    string webFilePath = Server.MapPath("ImgUpload/" + fileName);        // 服務器端文件路徑
                    string webFilePath_s = Server.MapPath("ImgUpload/" + fileName_s);  // 服務器端縮略圖路徑
                    string webFilePath_sy = Server.MapPath("ImgUpload/" + fileName_sy); // 服務器端帶水印圖路徑(文字)
                    string webFilePath_syp = Server.MapPath("ImgUpload/" + fileName_syp); // 服務器端帶水印圖路徑(圖片)
                    string webFilePath_sypf = Server.MapPath("test.png"); // 服務器端水印圖路徑(圖片)spa

                    if (!File.Exists(webFilePath))
                    {
                        try
                        {
                            FileUpload1.SaveAs(webFilePath);                                // 使用 SaveAs 方法保存文件
                            AddWater(webFilePath, webFilePath_sy);
                            AddWaterPic(webFilePath, webFilePath_syp, webFilePath_sypf);
                            MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut");     // 生成縮略圖方法
                            Label1.Text = "提示:文件「" + fileName + "」成功上傳,並生成「" + fileName_s + "」縮略圖,文件類型爲:" + FileUpload1.PostedFile.ContentType + ",文件大小爲:" + FileUpload1.PostedFile.ContentLength + "B";
                        }
                        catch (Exception ex)
                        {
                            Label1.Text = "提示:文件上傳失敗,失敗緣由:" + ex.Message;
                        }
                    }
                    else
                    {
                        Label1.Text = "提示:文件已經存在,請重命名後上傳";
                    }
                }
                else
                {
                    Label1.Text = "提示:文件類型不符";
                }
            }
        }
        /**/
        /// <summary>
        /// 生成縮略圖
        /// </summary>
        /// <param name="originalImagePath">源圖路徑(物理路徑)</param>
        /// <param name="thumbnailPath">縮略圖路徑(物理路徑)</param>
        /// <param name="width">縮略圖寬度</param>
        /// <param name="height">縮略圖高度</param>
        /// <param name="mode">生成縮略圖的方式</param>    
        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
        {
            System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);orm

            int towidth = width;
            int toheight = height;圖片

            int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;ci

            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);string

            //新建一個畫板
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);it

            //設置高質量插值法
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;io

            //設置高質量,低速度呈現平滑程度
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

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

            //在指定位置而且按指定大小繪製原圖片的指定部分
            g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
                new System.Drawing.Rectangle(x, y, ow, oh),
                System.Drawing.GraphicsUnit.Pixel);

            try
            {
                //以jpg格式保存縮略圖
                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
        }

        /**/
        /// <summary>
        /// 在圖片上增長文字水印
        /// </summary>
        /// <param name="Path">原服務器圖片路徑</param>
        /// <param name="Path_sy">生成的帶文字水印的圖片路徑</param>
        protected void AddWater(string Path, string Path_sy)
        {
            string addText = "中國";
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            g.DrawImage(image, 0, 0, image.Width, image.Height);
            System.Drawing.Font f = new System.Drawing.Font("Verdana", 60);
            System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Green);

            g.DrawString(addText, f, b, 35, 35);
            g.Dispose();

            image.Save(Path_sy);
            image.Dispose();
        }

        /**/
        /// <summary>
        /// 在圖片上生成圖片水印
        /// </summary>
        /// <param name="Path">原服務器圖片路徑</param>
        /// <param name="Path_syp">生成的帶圖片水印的圖片路徑</param>
        /// <param name="Path_sypf">水印圖片路徑</param>
        protected void AddWaterPic(string Path, string Path_syp, string Path_sypf)
        {
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
            g.Dispose();

            image.Save(Path_syp);            image.Dispose();        }

相關文章
相關標籤/搜索