图片添加时间或者别的标识
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的后台编辑好,