看到李开复老师在微博上发ppt,感觉挺好的。原来新浪微博开通了发多张图片进行拼接的功能,这样就可以把ppt转成图片,然后再发布到新浪微博上。但是新浪微博有最多9张图片的限制,这个比较不爽,而对于腾讯微博,还不能发多张图片,这个就更不爽了。 所以自己就写了一个将图片拼接起来的程序,用C#写的,非常简单,其实就一个函数,总的代码也不过130行,核心拼接函数如下:
/// /// 拼接图像 /// /// private Image JoinImage(List imageList, JoinMode jm) { //图片列表 if (imageList.Count <= 0) return null; if (jm == JoinMode.Horizontal) { //横向拼接 int width = 0; //计算总长度 foreach (Image i in imageList) { width += i.Width; } //高度不变 int height = imageList.Max(x => x.Height); //构造最终的图片白板 Bitmap tableChartImage = new Bitmap(width, height); Graphics graph = Graphics.FromImage(tableChartImage); //初始化这个大图 graph.DrawImage(tableChartImage, width, height); //初始化当前宽 int currentWidth = 0; foreach (Image i in imageList) { //拼图 graph.DrawImage(i, currentWidth, 0); //拼接改图后,当前宽度 currentWidth += i.Width; } return tableChartImage; } else if (jm == JoinMode.Vertical) { //纵向拼接 int height = 0; //计算总长度 foreach (Image i in imageList) { height += i.Height; } //宽度不变 int width = imageList.Max(x => x.Width); //构造最终的图片白板 Bitmap tableChartImage = new Bitmap(width, height); Graphics graph = Graphics.FromImage(tableChartImage); //初始化这个大图 graph.DrawImage(tableChartImage, width, height); //初始化当前宽 int currentHeight = 0; foreach (Image i in imageList) { //拼图 graph.DrawImage(i, 0, currentHeight); //拼接改图后,当前宽度 currentHeight += i.Height; } return tableChartImage; } else { return null; } }
也做了一个很简陋的图像界面,如下图所示: