C# 生成缩略图
imageTest image操作helper类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //----引入必要的命名空间 7 using System.IO; 8 using System.Drawing.Imaging; 9 using System.Drawing; 10 using System.Net; 11 12 namespace ImageTestConsole 13 { 14 15 public class imageTest 16 { 17 18 //----代码部分----// 19 20 public byte[] photo;//公用缓冲区 21 public string SourFilePath;//源图片文件路径 22 public string ObjFilePath;//目标图片路径 23 24 public int FileToStream()//文件到流的转换 25 { 26 Image img = new Bitmap(SourFilePath); 27 MemoryStream stream = new MemoryStream(); 28 img.Save(stream, ImageFormat.Bmp); 29 BinaryReader br = new BinaryReader(stream); 30 photo = stream.ToArray(); 31 stream.Close(); 32 return 0; 33 } 34 35 public Image ShowPic()//根据流显图 36 { 37 byte[] bytes = photo; 38 MemoryStream ms = new MemoryStream(bytes); 39 ms.Position = 0; 40 Image img = Image.FromStream(ms); 41 ms.Close(); 42 return img; 43 } 44 45 public int StreamToFile()//反向转换 46 { 47 byte[] bytes = photo; 48 FileStream fs = new FileStream(ObjFilePath, FileMode.Create, FileAccess.Write); 49 fs.Write(bytes, 0, bytes.Length); 50 fs.Flush(); 51 fs.Close(); 52 return 0; 53 } 54 55 56 #region 缩略图 57 58 59 public void ThumnImage(string serverUrl) 60 { 61 62 var fileList = GetImageList(serverUrl); 63 64 //var tbumbList = GetThumbImage(serverUrl); 65 66 fileList.ForEach(x => 67 { 68 photo = toImage(x.FileUrl); 69 ObjFilePath = x.FileUrl.Substring(0, x.FileUrl.LastIndexOf('\\') + 1) + x.FileName.Substring(0, x.FileName.LastIndexOf('.')) + ".thumb.png"; 70 StreamToFile(); 71 }); 72 73 } 74 75 /// <summary> 76 /// 查找所有jpg并返回filemodel 77 /// </summary> 78 /// <param name="url">绝对路径</param> 79 /// <returns></returns> 80 public List<FileHelperModel> GetImageList(string url) 81 { 82 //设置相对路径 83 string imgurl = url; 84 85 //根据相对路径,读取所有文件,并且不查找子文件夹。之后筛选格式是图片的文件 86 //var strs = System.IO.Directory.GetFiles(imgurl, "*.*", System.IO.SearchOption.TopDirectoryOnly).Where(s => s.EndsWith(".jpg") || s.EndsWith(".gif") || s.EndsWith(".bmp") || s.EndsWith(".png")); 87 88 var strs = System.IO.Directory.GetFiles(imgurl, "*.*", System.IO.SearchOption.TopDirectoryOnly).Where(s => s.EndsWith(".jpg") || s.EndsWith(".jpeg")); 89 90 List<FileHelperModel> filelist = new List<FileHelperModel>(); 91 var i = 0; 92 foreach (string file in strs) 93 { 94 //读取文件信息 95 System.IO.FileInfo fi = new System.IO.FileInfo(file); 96 //if (fi.Extension == ".jpg" || fi.Extension == ".gif" || fi.Extension == ".bmp" || fi.Extension == ".png") 97 if (fi.Extension == ".jpg" || fi.Extension == ".jpeg") 98 { 99 i++; 100 //获取文件名 101 var fileModel = new FileHelperModel(); 102 fileModel.ID = i; 103 fileModel.FileName = fi.Name; 104 fileModel.FileUrl = file; 105 106 filelist.Add(fileModel); 107 } 108 } 109 110 return filelist; 111 } 112 113 114 public List<FileHelperModel> GetThumbImage(string url) 115 { 116 //设置相对路径 117 string imgurl = url; 118 119 //根据相对路径,读取所有文件,并且不查找子文件夹。之后筛选格式是图片的文件 120 //var strs = System.IO.Directory.GetFiles(imgurl, "*.*", System.IO.SearchOption.TopDirectoryOnly).Where(s => s.EndsWith(".jpg") || s.EndsWith(".gif") || s.EndsWith(".bmp") || s.EndsWith(".png")); 121 122 var strs = System.IO.Directory.GetFiles(imgurl, "*.*", System.IO.SearchOption.TopDirectoryOnly).Where(s => s.Contains("thumb")); 123 124 List<FileHelperModel> filelist = new List<FileHelperModel>(); 125 var i = 0; 126 foreach (string file in strs) 127 { 128 //读取文件信息 129 System.IO.FileInfo fi = new System.IO.FileInfo(file); 130 //if (fi.Extension == ".jpg" || fi.Extension == ".gif" || fi.Extension == ".bmp" || fi.Extension == ".png") 131 if (fi.Extension == ".jpg" || fi.Extension == ".jpeg" || fi.Extension == ".png") 132 { 133 i++; 134 //获取文件名 135 var fileModel = new FileHelperModel(); 136 fileModel.ID = i; 137 fileModel.FileName = fi.Name; 138 fileModel.FileUrl = file; 139 140 filelist.Add(fileModel); 141 } 142 } 143 return filelist; 144 } 145 146 /// <summary> 147 /// 缩略图 148 /// shidd 149 /// </summary> 150 /// <param name="myStream">文件流</param> 151 /// <param name="serverUrl">文件名</param> 152 /// <returns>字节数组</returns> 153 public byte[] toImage(string serverUrl) 154 { 155 string path = serverUrl; 156 Stream myStream = WebRequest.Create(path).GetResponse().GetResponseStream(); 157 158 //生成缩略图 159 //创建改变后的Stream 160 var stream = new System.IO.MemoryStream(); 161 //取得后缀名 162 string suffix = serverUrl.Substring(serverUrl.LastIndexOf(".")); 163 //创建一个图像对象取得上传图片对象 164 System.Drawing.Image myImage = System.Drawing.Image.FromStream(myStream, false); 165 //int percentage= myImage.Height / myImage.Width;//原图片比例 166 //由上传图片产生一个缩略图(600*400) 167 var width = 600; 168 var height = 400; 169 170 width = 100; 171 height = 100; 172 173 System.Drawing.Image thumbImage = myImage.GetThumbnailImage(width, height, null, System.IntPtr.Zero); 174 //保存缩略图到Stream流 175 thumbImage.Save(stream, this.getImageFormat(suffix)); 176 //关闭缩略图对象 177 thumbImage.Dispose(); 178 return stream.ToArray(); 179 } 180 181 182 /// <summary> 183 /// 图片格式 184 /// </summary> 185 /// <param name="suffix">文件后缀</param> 186 /// <returns></returns> 187 private System.Drawing.Imaging.ImageFormat getImageFormat(string suffix) 188 { 189 System.Drawing.Imaging.ImageFormat myFormat; 190 switch (suffix.ToLower()) 191 { 192 case ".bmp": 193 myFormat = System.Drawing.Imaging.ImageFormat.Bmp; 194 break; 195 case ".emf": 196 myFormat = System.Drawing.Imaging.ImageFormat.Emf; 197 break; 198 case ".exif": 199 myFormat = System.Drawing.Imaging.ImageFormat.Exif; 200 break; 201 case ".gif": 202 myFormat = System.Drawing.Imaging.ImageFormat.Gif; 203 break; 204 case ".icon": 205 myFormat = System.Drawing.Imaging.ImageFormat.Icon; 206 break; 207 case ".jpeg": 208 case ".jpg": 209 myFormat = System.Drawing.Imaging.ImageFormat.Jpeg; 210 break; 211 case ".png": 212 myFormat = System.Drawing.Imaging.ImageFormat.Png; 213 break; 214 case ".tiff": 215 myFormat = System.Drawing.Imaging.ImageFormat.Tiff; 216 break; 217 case ".wmf": 218 myFormat = System.Drawing.Imaging.ImageFormat.Wmf; 219 break; 220 default: 221 myFormat = System.Drawing.Imaging.ImageFormat.MemoryBmp; 222 break; 223 } 224 return (myFormat); 225 } 226 227 #endregion 228 } 229 230 public class FileHelperModel 231 { 232 public int ID { get; set; } 233 234 public string FileName { get; set; } 235 236 public string FileUrl { get; set; } 237 238 } 239 }
控制台生成缩略图
1 static void Main(string[] args) 2 { 3 imageTest imageTest = new imageTest(); 4 imageTest.ThumnImage(@"E:\Test"); 5 6 //var t = @"E:\Test1\555.png"; 7 //var str = t.Substring(t.LastIndexOf('\\') + 1); 8 //var te = t.Substring(0, t.LastIndexOf('\\') + 1); 9 //Console.WriteLine(te + " " + str); 10 Console.ReadLine(); 11 }