图片添加时间或者别的标识

  1     private void button1_Click(object sender, EventArgs e)
  2         {
  3 
  4 
  5             OpenFileDialog ofd = new OpenFileDialog();
  6             ofd.Title = "请选择图片文件";
  7             ofd.InitialDirectory = @"C:\Users\Administrator\Desktop";
  8             ofd.Filter = "图片文件或视频文件|*.jpg;*.png;*.bmp;*.gif";
  9             if (ofd.ShowDialog() == DialogResult.OK)
 10             {
 11                 //@! 文件图片地址
 12                 this.textBox1.Text = ofd.FileName;
 13 
 14                 Image Images = OpenImageFile(ofd.FileName);
 15                 Bitmap bitImg = (Bitmap)Images;
 16                 //@! 此处的做法是避免(GDI)
 17                 Bitmap bmp2 = new Bitmap(bitImg.Width, bitImg.Height);
 18                 Graphics draw = Graphics.FromImage(bmp2);
 19                 draw.DrawImage(bitImg, 0, 0);
 20                 draw.Dispose();
 21         
 22                  //@! 1 得到图片Byte[]
 23                 byte[] imageBytes = Convert.FromBase64String(Bitmap2Base64_Jpeg(bmp2));
 24                 //@! 2 得到时间(标识)Byte[]
 25                 string dateTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 26                 //@! 将字符串转换为Byte[]
 27                 byte[] byteArrayDateTime = System.Text.Encoding.Default.GetBytes(dateTime);
 28 
 29                 //@! 3 合并图片跟时间(标识)Byte[]
 30                 byte[] ByteImgData = CopyToBig(imageBytes, byteArrayDateTime);
 31 
 32                 //@! =========分割线=============
 33                 //@! 获取时间(标识)信息
 34                 //  byte[]dateByte=new byte[19];
 35                 //  Array.Copy(ByteImgData, ByteImgData.Length - 19, dateByte, 0, 19);
 36                 byte[] dateByte = ByteImgData.Skip(ByteImgData.Length - 19).Take(19).ToArray();
 37 
 38                 //@! 将Byte[] 转换为 字符串     (显示)
            MessageBox.Show(System.Text.Encoding.Default.GetString(dateByte));
39 40 Image img = ByteToImage(ByteImgData); 41 pictureBox1.Image = img; 42 43 } 44 } 45 46 47 48 49 50 private byte[] CopyToBig(byte[] bBig, byte[] bSmall) 51 { 52 List<byte> lTemp = new List<byte>(); 53 lTemp.AddRange(bBig); 54 lTemp.AddRange(bSmall); 55 bBig = new byte[lTemp.Count]; 56 lTemp.CopyTo(bBig); 57 return bBig; 58 } 59 60 public System.Drawing.Image ByteToImage(byte[] buffer) 61 { 62 System.Drawing.Image img = null; 63 MemoryStream ms = null; 64 65 try 66 { 67 if (null == buffer || buffer.Length <= 0) throw new Exception("buffer不合法!"); 68 69 ms = new MemoryStream(buffer); 70 img = System.Drawing.Image.FromStream(ms); 71 } 72 catch (Exception ex) 73 { 74 img = null; 75 string strErrMsg = ex.Message; 76 } 77 finally 78 { 79 if (null != ms) 80 { 81 ms.Close(); 82 ms.Dispose(); 83 } 84 } 85 86 return img; 87 } 88 89 public System.Drawing.Image OpenImageFile(string ImageFilePath) 90 { 91 System.Drawing.Image img = null; 92 FileStream fileStream = null; 93 94 try 95 { 96 if (string.IsNullOrEmpty(ImageFilePath)) throw new Exception("ImageFilePath不合法!"); 97 98 fileStream = new FileStream(ImageFilePath, FileMode.Open, FileAccess.Read, FileShare.Read); 99 fileStream.Lock(0, fileStream.Length); 100 img = System.Drawing.Image.FromStream(fileStream); 101 fileStream.Unlock(0, fileStream.Length); 102 103 } 104 catch (Exception ex) 105 { 106 img = null; 107 string strErrMsg = ex.Message; 108 } 109 finally 110 { 111 if (null != fileStream) 112 { 113 fileStream.Close(); 114 fileStream.Dispose(); 115 } 116 } 117 118 return img; 119 } 120 121 public string Bitmap2Base64_Jpeg(Bitmap bitmap) 122 { 123 string Base64string = null; 124 try 125 { 126 byte[] bytes = Bitmap2Bytes(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg); 127 Base64string = Convert.ToBase64String(bytes); 128 } 129 catch (Exception ex) 130 { 131 Base64string = null; 132 string strErrMsg = ex.Message; 133 } 134 135 return Base64string; 136 } 137 public byte[] Bitmap2Bytes(Bitmap bitmap, ImageFormat format) 138 { 139 byte[] data = null; 140 141 try 142 { 143 using (MemoryStream stream = new MemoryStream()) 144 { 145 bitmap.Save(stream, format); 146 data = new byte[stream.Length]; 147 stream.Seek(0, SeekOrigin.Begin); 148 stream.Read(data, 0, Convert.ToInt32(stream.Length)); 149 } 150 } 151 catch (Exception ex) 152 { 153 data = null; 154 string strErrMsg = ex.Message; 155 } 156 157 return data; 158 }

 

---恢复内容开始---

  这几天看到一篇文章,说的是一个盗用某个网红微信照片去骗取别人的钱,之后某网红后面说道以后发表图片要加水印,我在想不加水印也知道这图片是有标识的。或许别人已经做到了,我就根据个人理解的写一段C#WinForm代码,各位大神指点一下,有更好的可以推荐一下。

 

---恢复内容结束---

最后抱怨一下,博客网的后台编辑没有CSDN的后台编辑好,

 

posted @ 2017-03-30 15:37  坑吭好学  阅读(297)  评论(0编辑  收藏  举报