给图片添加水印
許久沒寫代碼了,許久沒上博客園了,許久沒有寫博文了。
?
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace MarkPicWithFileName
{
??? public partial class Form1 : Form
??? {
??????? public Form1()
??????? {
??????????? InitializeComponent();
??????? }
??????? private void button1_Click(object sender, EventArgs e)
??????? {
??????????? DirectoryInfo dic = new DirectoryInfo(@"C:\Users\kerry\Desktop\handbag");
??????????? FileInfo[] files = dic.GetFiles();
??????????? foreach (FileInfo f in files)
??????????? {
??????????????? Image img = Image.FromFile(f.FullName);
??????????????? string newFileName=@"C:\Users\kerry\Desktop\handbag\new\" + f.Name;
??????????????? Utils.AddImageSignText(img, newFileName, f.Name.Replace(".JPG", string.Empty).Replace(".jpg", string.Empty), 1, 100, "微軟雅黑", 24);
????????????? ?
??????????????? //Utils .AddImageSignText (
??????????? }
??????? }
???????? }
??? public class Utils
??? {
??????? /// <summary>
??????? /// 增加圖片文字水印
??????? /// </summary>
??????? /// <param name="filename">文件名</param>
??????? /// <param name="watermarkText">水印文字</param>
??????? /// <param name="watermarkStatus">圖片水印位置</param>
??????? public static void AddImageSignText(Image img, string filename, string watermarkText, int watermarkStatus, int quality, string fontname, int fontsize)
??????? {
??????????? //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img);
??????????? //??? .FromFile(filename);
??????????? Graphics g = Graphics.FromImage(img);
??????????? Font drawFont = new Font(fontname, fontsize, FontStyle.Regular, GraphicsUnit.Pixel);
??????????? SizeF crSize;
??????????? crSize = g.MeasureString(watermarkText, drawFont);
??????????? float xpos = 0;
??????????? float ypos = 0;
??????????? switch (watermarkStatus)
??????????? {
??????????????? case 1:
??????????????????? xpos = (float)img.Width * (float).01;
??????????????????? ypos = (float)img.Height * (float).01;
??????????????????? break;
??????????????? case 2:
??????????????????? xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
??????????????????? ypos = (float)img.Height * (float).01;
??????????????????? break;
??????????????? case 3:
??????????????????? xpos = ((float)img.Width * (float).99) - crSize.Width;
??????????????????? ypos = (float)img.Height * (float).01;
??????????????????? break;
??????????????? case 4:
??????????????????? xpos = (float)img.Width * (float).01;
??????????????????? ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
??????????????????? break;
??????????????? case 5:
??????????????????? xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
??????????????????? ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
??????????????????? break;
??????????????? case 6:
??????????????????? xpos = ((float)img.Width * (float).99) - crSize.Width;
??????????????????? ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
??????????????????? break;
??????????????? case 7:
??????????????????? xpos = (float)img.Width * (float).01;
??????????????????? ypos = ((float)img.Height * (float).99) - crSize.Height;
??????????????????? break;
??????????????? case 8:
??????????????????? xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
??????????????????? ypos = ((float)img.Height * (float).99) - crSize.Height;
??????????????????? break;
??????????????? case 9:
??????????????????? xpos = ((float)img.Width * (float).99) - crSize.Width;
??????????????????? ypos = ((float)img.Height * (float).99) - crSize.Height;
??????????????????? break;
??????????? }
??????????? //??????????? System.Drawing.StringFormat StrFormat = new System.Drawing.StringFormat();
??????????? //??????????? StrFormat.Alignment = System.Drawing.StringAlignment.Center;
??????????? //
??????????? //??????????? g.DrawString(watermarkText, drawFont, new System.Drawing.SolidBrush(System.Drawing.Color.White), xpos + 1, ypos + 1, StrFormat);
??????????? //??????????? g.DrawString(watermarkText, drawFont, new System.Drawing.SolidBrush(System.Drawing.Color.Black), xpos, ypos, StrFormat);
??????????? g.DrawString(watermarkText, drawFont, new SolidBrush(Color.White), xpos + 1, ypos + 1);
??????????? g.DrawString(watermarkText, drawFont, new SolidBrush(Color.Black), xpos, ypos);
??????????? ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
??????????? ImageCodecInfo ici = null;
??????????? foreach (ImageCodecInfo codec in codecs)
??????????? {
??????????????? if (codec.MimeType.IndexOf("jpeg") > -1)
??????????????? {
??????????????????? ici = codec;
??????????????? }
??????????? }
??????????? EncoderParameters encoderParams = new EncoderParameters();
??????????? long[] qualityParam = new long[1];
??????????? if (quality < 0 || quality > 100)
??????????? {
??????????????? quality = 80;
??????????? }
??????????? qualityParam[0] = quality;
??????????? EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qualityParam);
??????????? encoderParams.Param[0] = encoderParam;
??????????? if (ici != null)
??????????? {
??????????????? img.Save(filename, ici, encoderParams);
??????????? }
??????????? else
??????????? {
??????????????? img.Save(filename);
??????????? }
??????????? g.Dispose();
??????????? //bmp.Dispose();
??????????? img.Dispose();
??????? }
? ?
??? }
}
轉載于:https://www.cnblogs.com/jinzhao/archive/2011/01/10/1932118.html
總結
- 上一篇: 【已解决】ws2_32.dll丢失怎么办
- 下一篇: 王道操作系统考研笔记——1.1.1 操作