C# asp.net上傳圖片加浮水印文字(個人心得)

來源:互聯網
上載者:User

  今天與大家分享一下"C# asp.net上傳圖片加浮水印文字",沒什麼技術含量,我也沒裝13,但是還是希望如果轉載的話請註明作者和出處,謝謝!

  圖片加文字浮水印的文章到百度或者Google上去一搜一大堆,但是貌似有用的沒多少,很多都是一個版本,其他的都是轉載或者分享的,很多情況下都不能滿足我們自己的需求,今天我正好要用到圖片加浮水印這方面知識,於是我整理了一下我的心得,僅供大家參考,大蝦們跳過,我是菜鳥,哈哈~~

  下面開講:

  第一步:首先我想的是原理

  因為使用微博的原因,大家都注意到了,微博上分圖片在右下角都會加上你的微博地址,而且無論圖片是大是小,浮水印都會加到右下角位置,根據這一想法,我畫了一張圖,直觀一點解釋一下...:

  從圖片上我們可以很直觀明了的看出這裡面的原理了,所以我們代碼要解決的問題就是擷取圖片的寬度和高度,以及根據字型大小以及文字的個數計算出所話地區的長度和高度,這樣就很簡單了,呵呵...

  第二步:寫代碼、測試代碼

  過程我就省略了,直接看代碼吧:  

AddWaterText

 /// <summary>        /// 圖片加浮水印文字        /// </summary>        /// <param name="oldpath">舊圖片地址</param>        /// <param name="text">浮水印文字</param>        /// <param name="newpath">新圖片地址</param>        /// <param name="Alpha">透明度</param>        /// <param name="fontsize">字型大小</param>        public static void AddWaterText(string oldpath, string text, string newpath, int Alpha, int fontsize)        {            try            {                text = text + "著作權";                FileStream fs = new FileStream(oldpath, FileMode.Open);                BinaryReader br = new BinaryReader(fs);                byte[] bytes = br.ReadBytes((int)fs.Length);                br.Close();                fs.Close();                MemoryStream ms = new MemoryStream(bytes);                System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(ms);                int imgPhotoWidth = imgPhoto.Width;                int imgPhotoHeight = imgPhoto.Height;                Bitmap bmPhoto = new Bitmap(imgPhotoWidth, imgPhotoHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);                bmPhoto.SetResolution(72, 72);                Graphics gbmPhoto = Graphics.FromImage(bmPhoto);                //gif背景色                gbmPhoto.Clear(Color.FromName("white"));                gbmPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;                gbmPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;                gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, imgPhotoWidth, imgPhotoHeight), 0, 0, imgPhotoWidth, imgPhotoHeight, GraphicsUnit.Pixel);                System.Drawing.Font font = null;                System.Drawing.SizeF crSize = new SizeF();                font = new Font("宋體", fontsize, FontStyle.Bold);                //測量指定地區                crSize = gbmPhoto.MeasureString(text, font);                float y = imgPhotoHeight - crSize.Height;                float x = imgPhotoWidth - crSize.Width;                System.Drawing.StringFormat StrFormat = new System.Drawing.StringFormat();                StrFormat.Alignment = System.Drawing.StringAlignment.Center;                //畫兩次製造透明效果                System.Drawing.SolidBrush semiTransBrush2 = new System.Drawing.SolidBrush(Color.FromArgb(Alpha, 56, 56, 56));                gbmPhoto.DrawString(text, font, semiTransBrush2, x + 1, y + 1);                System.Drawing.SolidBrush semiTransBrush = new System.Drawing.SolidBrush(Color.FromArgb(Alpha, 176, 176, 176));                gbmPhoto.DrawString(text, font, semiTransBrush, x, y);                bmPhoto.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);                gbmPhoto.Dispose();                imgPhoto.Dispose();                bmPhoto.Dispose();            }            catch            {                                ;                            }        }

  代碼我就不解釋了,基本上在原理中都解釋過了。另:關於參數的設定,我們還可以加上是什麼字型、字型顏色、是否加粗,以及定位到什麼位子等,這樣就封裝的更好了,由於我現在只需要把浮水印加到右下角,所以我就沒有再寫了,呵呵...原理一樣,封裝也很好封裝,留給你們寫吧,哈哈...

  下面看吧,因為圖是最直觀的展示了...

  上面就是我隨便截了張圖的。

  調用方法:命名空間.類名.AddWaterText(picpath, "Tandy Tang - 部落格園", picpath, 255, 18);

  如果你覺得對你有協助的話,別忘了點推薦哦~~

  PS:Tandy Tang祝大家寫代碼寫的愉快!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.