.net 图片合成大图
来源:互联网 发布:怎样能修改淘宝会员名 编辑:程序博客网 时间:2024/04/28 17:18
1 int pheight = ((imageFiles.Count / num) + 1) * (sheight); //计算大图高度 2 3 4 List<Rectangle> Rects = new List<Rectangle>(); 5 List<System.Drawing.Image> imgs = new List<System.Drawing.Image>(); 6 System.Drawing.Image img; 7 System.Drawing.Image sImg; 8 9 try 10 { 11 12 if (picPath == "") 13 { 14 img = new Bitmap(pwidth, pheight);//画颜色背景 15 } 16 else 17 { 18 img = Bitmap.FromFile(picPath);//画图片背景 19 } 20 21 22 foreach (string item in imageFiles)//加载小图片; 23 { 24 sImg = Bitmap.FromFile(item); 25 imgs.Add(sImg); 26 } 27 28 Pen pen = new Pen(GetColor(borderbg), borderSize);//加边框 29 30 31 32 //先画行,再画列 33 for (int i = 0; i < pheight; i += sheight) 34 { 35 for (int j = 2; j < pwidth; j += pwidth / num) 36 { 37 Rectangle rect = new Rectangle(j, i, swidth, sheight); 38 Rects.Add(rect); 39 } 40 } 41 42 43 44 Graphics g = Graphics.FromImage(img); 45 46 47 if (picPath == "") 48 { 49 g.Clear(GetColor(imagebg)); 50 } 51 52 53 54 string subNum = "";//截取图片后四位做编号 55 //根据小图的个数画出 56 for (int i = 0; i < imgs.Count; i++) 57 { 58 subNum = imageFiles[i].Substring(imageFiles[i].LastIndexOf("\\") + 1); 59 if (subNum.IndexOf("-") > 0) 60 { 61 subNum = subNum.Substring(0, subNum.IndexOf("-")); 62 } 63 else 64 { 65 subNum = subNum.Substring(0, subNum.IndexOf(".")); 66 } 67 subNum = subNum.Substring(subNum.Length - 4, 4); 68 69 g.DrawRectangle(pen, Rects[i]);//给每个小图片加上边框 70 g.DrawImage(imgs[i], Rects[i]); 71 g.DrawString(subNum, new Font("Arial", 10, FontStyle.Bold), new SolidBrush(Color.Red), Rects[i]); 72 } 73 74 string filePath = savePath + "\\" + ProductSKU + "\\" + ProductSKU + ".jpg";//保存路径 75 76 saveTempPath += "\\" + ProductSKU + ".jpg";//临时工 = =! 77 78 79 MemoryStream ms = new MemoryStream();//放入内存,方便页面显示 80 img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 81 82 if (!Directory.Exists(Path.GetDirectoryName(filePath))) 83 { 84 Directory.CreateDirectory(Path.GetDirectoryName(filePath)); 85 } 86 87 88 if (File.Exists(filePath))//如果存在就替换 89 { 90 img.Save(saveTempPath, System.Drawing.Imaging.ImageFormat.Jpeg);//临时工派上上场了 91 File.Copy(saveTempPath, filePath, true); 92 if (File.Exists(saveTempPath)) 93 { 94 File.Delete(saveTempPath); 95 } 96 } 97 else 98 { 99 img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);//保存100 }101 102 103 SplitIMG(filePath, pheight / (sheight), pwidth, sheight, savePath);104 105 106 ms.Dispose();107 g.Dispose();108 img.Dispose();109 110 foreach (var i in imgs)111 {112 i.Dispose();113 }114 115 Response.ClearContent();116 Response.ContentType = "image/Jpeg";117 Response.BinaryWrite(ms.ToArray());118 }119 catch (Exception ex)120 {121 Response.WriteFile(ex.Message);122 }
获取文件夹下的图片
1 public List<string> ImageFile(string path) 2 { 3 List<string> PicFile = new List<string>(); 4 FileInfo fi; 5 if (!Directory.Exists(path)) 6 { 7 throw new FileNotFoundException(); 8 } 9 10 foreach (var i in Directory.GetFiles(path))11 {12 fi = new FileInfo(i);13 if (fi.Extension.ToLower() == ".jpg" || fi.Extension.ToLower() == ".gif" || fi.Extension.ToLower() == ".bmp")14 {15 PicFile.Add(i);16 }17 }18 19 return PicFile;20 }
分成小图
1 /// <summary> 2 /// 分成小图 3 /// </summary> 4 /// <param name="filePath">图片路径</param> 5 /// <param name="splitNum">分成几份</param> 6 /// <param name="w"></param> 7 /// <param name="h"></param> 8 /// <param name="savePath"></param> 9 public void SplitIMG(string filePath, int splitNum, int w, int h, string savePath)10 {11 12 Bitmap bitmap;13 Graphics g;14 15 try16 {17 System.Drawing.Image img = Bitmap.FromFile(filePath);18 19 20 for (int i = 0; i < splitNum; i++)21 {22 using (bitmap = new Bitmap(w, h))23 {24 g = Graphics.FromImage(bitmap);25 g.DrawImage(img, new Rectangle(0, 0, w, h), new Rectangle(0, h * i, w, h), GraphicsUnit.Pixel);26 bitmap.Save(savePath + "\\" + ProductSKU + "\\" + ProductSKU + "_" + (i + 1) + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);27 }28 g.Dispose();29 }30 31 }32 catch (Exception ex)33 {34 Response.Write(ex.Message);35 return;36 }37 finally38 {39 }40 }
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- .net 图片合成大图
- .net 图片合成大图
- 页面中多个小图片元素合成一个大图片之后用CSS调用
- 合成图片
- 合成图片
- 图片合成
- 图片合成
- 合成图片
- 在Android中的大图片合成-PNG(三) PNG合成
- 图片合成-图片合成属性设
- 点击图片,查看大图
- jQuery 查看图片大图
- 点击图片 弹出大图
- 大图处理,图片丢失
- 地图气泡图片合成
- Android图片合成
- Android图片的合成
- 图片的合成
- java实现把文件上传至ftp服务器
- VC程序提示 Expression:("Buffer too small",0) 错误
- cygwin_windows8_relocate
- 到此为止
- 分布式的一致性
- .net 图片合成大图
- jlink 错误 :Can not connect to J-Link via USB
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- hdu3808Celebration of Stefanie's Wedding
- Precision Helper:最佳免费 CHM 制作软件
- for(int a:i)在java 编程中是什么意思
- 第七次上机实验
- 安卓4.2.1系统状态栏时间居左教程
- 使用Lock来实现生产者和消费者问题