1. 程式人生 > >上傳圖片的縮放和圖片新增水印

上傳圖片的縮放和圖片新增水印

此文件為:記錄asp.net後臺上傳圖片時,根據需要對圖片的處理功能。可以對圖片進行任意比例的縮放和在圖片上新增任意水印(文字水印,圖片水印,文字+圖片)

    protected void Up_load_btn_Click(object sender, EventArgse)

    {
        string fileUrl = "";
        if (Up_load.HasFile)
        {
            try
            {
                //取得當前系統時間
                string systemDateString = DateTime.Now.ToString("yyyyMMddhhmmss");
                string ImageNewName = systemDateString + "_" + 2;
                string path = Request.MapPath("~/attached/");
                fileUrl = string.IsNullOrEmpty(this.Up_load.FileName.Trim()) ? "" : ImageNewName + System.IO.Path.GetExtension(this.Up_load.FileName); //得到名字+副檔名(例如20001265466.jpg)
                if (!string.IsNullOrEmpty(fileUrl))
                {
                    this.Up_load.PostedFile.SaveAs(path + fileUrl);//儲存圖片
                    // MakeThumbnail(path + fileUrl, path + "xiaotu\\" + fileUrl, 100, 100, "HW");
                    //AddWaterText(path + fileUrl, path + "xiaotu\\" + fileUrl);
                    AddWaterPic(path + fileUrl, path + "xiaotu\\" + fileUrl, path +"pngYOYO.png" );
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            Response.Redirect("UploadImg.aspx");
        }
    }
    /// <summary>
    /// 生成縮圖
    /// </summary>
    /// <param name="originalImagePath">源圖路徑(物理路徑)</param>
    /// <param name="thumbnailPath">縮圖路徑(物理路徑)</param>
    /// <param name="width">縮圖寬度</param>
    /// <param name="height">縮圖高度</param>
    /// <param name="mode">生成縮圖的方式</param>   
    public void MakeThumbnail(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;

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

        //新建一個畫板
        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, 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 AddWaterText(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("微軟雅黑", 12 );    //字型大小為12
        System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.White);

        g.DrawString(addText, f, b, 530, 255); //字型位置為距離左邊:530px,距離上邊:255px
        g.Dispose();


        string addText_1 = "www.yoyo978.com";
        System.Drawing.Graphics g_1 = System.Drawing.Graphics.FromImage(image);
        g_1.DrawImage(image, 0, 0, image.Width, image.Height);
        System.Drawing.Font f_1 = new System.Drawing.Font("微軟雅黑", 12);    //字型大小為12
        System.Drawing.Brush b_1 = new System.Drawing.SolidBrush(System.Drawing.Color.White);

        g_1.DrawString(addText_1, f_1, b_1, 490, 275); //字型位置為左上空14 
        g_1.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();
    }
                       

相關推薦

圖片圖片新增水印

此文件為:記錄asp.net後臺上傳圖片時,根據需要對圖片的處理功能。可以對圖片進行任意比例的縮放和在圖片上新增任意水印(文字水印,圖片水印,文字+圖片)     protected void Up_load_btn_Click(object sender, EventAr

CKfinder for java詳解二:圖及圖片

我們找到  <thumbs><enabled>true</enabled><url>�SE_URL%_thumbs/</url><directory>�SE_DIR%_thumbs</directory>&l

Android 實現圖片拖動

今天我們來編寫一個縮放效果的ImageView ,網上有很多人都講了這些。但有許多人都直接使用了庫檔案, 那麼我們今天做的是直接上程式碼編寫一個拖動和縮放的ImageView,具體看效果圖, 那麼簡單了分析一下。在手機上縮放圖片和拖動要用到什麼?手指對不

Glide 入門到精通之四——圖片調整大小

圖片調整大小和縮放是有趣的,在實際應用中也是很重要的 用 resize(x,y) 調整圖片大小 通常情況下,如果你的伺服器或者 API 提供的影象是你需要的精確尺寸,這時是完美的情況下,在記憶體小號和影象質量之間的權衡。 在和 Picasso 比較

C#圖片處理之:圖片剪裁

應聽眾點播要求,今天說說用C#做圖片的縮放和剪裁,相信很多人會對這部分內容感興趣,畢竟這個操作太實用了。 其實在GDI+中,縮放和剪裁可以看作同一個操作,無非就是原始區域的選擇不同罷了。空口無憑,先看具體演算法可能更好理解。         /// <summary&g

django admin圖片,更改路徑圖片名稱

今天終於學會了 django admin 上傳圖片更改路徑和圖片名稱; 廢話不說 ,步驟開始。 1.自定義 上傳圖片的儲存路徑和,圖片名稱格式。 def upload_path_handler(instance, filename):     filename="ewn1.

圖片封裝類【包括圖片略圖】.NET

tolower tdi p s else col width posted ef6 substr 原文發布時間為:2009-08-30 —— 來源於本人的百度文章 [由搬家工具導入]#region 上传图片Լ

Ueditor結合七牛雲存儲圖片、附件圖片在線管理的實現最新更新

1.4 star json serve 列出文件 教程 開發 存儲服務器 name 最新下載地址: https://github.com/widuu/qiniu_ueditor_1.4.3 Ueditor七牛雲存儲版本 註意事項 老版本請查看 : https://gith

記一次產品需求:圖片等比CSS自適應布局16:9

是我 width 圖片展示 網上 IT tom 就會 很好 尺寸 前言   前陣子,產品跑過來問我現有的模板中沒有圖片模板,需要添加一個圖片模板;然而,他要求圖片在展示區最好能夠實現隨著窗口的變化而自動按圖片比例等比縮放,並且居中展示圖片。我當時想著,拋開技術實現層面,圖

基於Vue + Node.js + MongoDB的圖片組件,實現圖片的預覽刪除

信息 clas 發送數據 演示 新增 one input標簽 return tof 公司要寫一些為自身業務量身定制的的組件,要基於Vue,趁著這個機會,自己在業余時間也寫了個組件,選擇寫圖片上傳是因為自己之前一直對這個功能比較迷糊,所以這次好好了解了一下。演示在網址打開後的

基於jQuerycropper點選頭像並預覽裁剪圖片

使用jquery上傳前,預覽圖片,裁剪,示例使用php接收上傳的檔案,並且儲存為裁剪後的圖片。不需要上傳後再裁剪圖片,只需要本地裁剪好即可,裁剪的時候也可以旋轉圖片。裁剪控制元件使用了,cropper。 html程式碼 <!DOCTYPE html> <html la

使用JCrop進行圖片裁剪,裁剪js說明,裁剪預覽,裁剪,裁剪設計的圖片處理的工具類程式碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

安卓觸控手勢事件實現圖片跟著手指移動圖片

效果如下: 佈局程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

ThinkPHP5.0圖片生成圖例項程式碼

很多朋友遇到這樣一個問題,圖片上傳生成縮圖,很多人在本機(win)測試成功,上傳到linux 伺服器後錯誤。我也遇到同樣的問題。網上一查,有無數的人說是伺服器臨時檔案目錄許可權問題。幾經思考後,發現並非如此。其根本的原因是,儲存到變數的資訊是之前的,之後又move移動到了自己指定的目錄下,同時臨時檔案已經不存

java Ueditor 百度編輯器 整合ssm後臺多圖片,無縫加入專案做新增儲存

效果圖  多圖片單圖片 上傳到後臺 本地儲存。編輯框回顯,複製貼上直接用,適合實際專案中做 內容發表,發表文章等等編輯自定義上傳圖片 多圖片到後臺路徑,看了網上一推教程,走了很多彎路,簡單明瞭 ,複製貼上直接用 專案地址 https://download.csdn.net/d

成功實現Django Admin圖片圖處理

經過一天的努力,終於實現了完全用Django的方式上傳圖片,並且可自動生成縮圖。過程是很鬱悶的,因為網上搜索到的東西大都不完全。只是給點明一下。比較全面點的參考文章是http://imtx.me/archives/693.html。不過按照這上面說的,做完後會提示錯誤,如下

第三方外掛的引用(1) : SSM,springboot 引入ueditor及圖片阿里雲OS展示

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional/

CSS3感應滑鼠背景閃爍圖片效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

PictureBox中的圖片實現鼠標滑輪控制平移

bsp 容器 select drawing oid ane box move style 昨天剛學會了如何實現PictureBox控件中的圖像自動縮放和平移,下面我把過程給大家說一下: 參考了:https://www.cnblogs.com/jinqier/p/34972

nginx實現圖片裁剪

最近在做桌布的專案,會要求根據原圖生成不同的解析度來適配手機。目前設計的方案是隻儲存一張原圖,不同解析度的圖片在請求時根據原圖動態裁剪,nginx層實現。 例: 原圖url:http://s.qdcdn.com/cl/12526976.jpg 客戶端請求的url:http