C#怎么将bitmap的图片拆分再合并
例如把bitmap的13579行拆分出来再合并到一个bitmap里面
先看一效果:
自定义行高的效果:
完整的示例代码我发布在了我的.NET社区问答栏目中《C#怎么将Bitmap的图片拆分再合并呢?》:
核心示例代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}
private int _width;
private int _height = 20;
private string _imagePath = @"d:\tmp\2.jpg";
private List<Image> SplitImage(string imagePath)
{
var imgArray = new List<Image>();
var img = Image.FromFile(imagePath);
var width = img.Width;
var rows = img.Height / _height;
for (var i = 0; i < rows * 2; i += 2)
{
var image = new Bitmap(width, _height);
imgArray.Add(image);
var graphics = Graphics.FromImage(image);
graphics.DrawImage(img, new Rectangle(0, 0, width, _height), new Rectangle(0, i * _height, width, _height), GraphicsUnit.Pixel);
graphics.Dispose();
}
return imgArray;
}
public Bitmap CombineBitmap(List<Image> images)
{
Bitmap finalImage = null;
try
{
finalImage = new Bitmap(_width, images.Count * _height);
using (var g = Graphics.FromImage(finalImage))
{
g.Clear(Color.Transparent);
var offset = 0;
foreach (var image in images.Cast<Bitmap>())
{
g.DrawImage(image, new Rectangle(0, offset, image.Width, image.Height));
offset += image.Height;
}
}
return finalImage;
}
catch (Exception)
{
finalImage?.Dispose();
throw;
}
}
}
}