c#下分割图像的几种办法
来源:互联网 发布:淘宝视频怎么下载 编辑:程序博客网 时间:2024/05/20 16:33
Bitmap bb = (Bitmap)Image.FromFile("...");
Bitmap sepbitmap1= bb.Clone(new System.Drawing.Rectangle(0,0,20,20),System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Image image = System.Drawing.Image.FromFile("a.jpg",true);
Bitmap bmp = new Bitmap(400,400);
Graphics grap = Graphics.FromImage(bmp);
grap.Clear(Color.Transparent);
grap.DrawImage(image,new Rectangle(0,0,400,400));
如果a.jpg的大小是4000*4000,这样在新的图像中得到的就是左上角起的400*400的一部份.
若要10*10,则用循环就可实现
[System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]
private static extern bool BitBlt (
IntPtr hdcDest , // 目标 DC的句柄
int nXDest ,
int nYDest ,
int nWidth ,
int nHeight ,
IntPtr hdcSrc , // 源DC的句柄
int nXSrc ,
int nYSrc ,
System.Int32 dwRop // 光栅的处理数值
) ;
private void button1_Click(object sender, System.EventArgs e)
{
try
{
string file = null;
Bitmap bmp = null;
IntPtr dc1 = IntPtr.Zero;
IntPtr dc2 = IntPtr.Zero;
int row = 2, col = 2;
int left = 0, top =0 , width = 0, height = 0;
for(int i=0; i<row; i++)
{
left = 0;
top = i * ((int)(this.pictureBox1.Height / row));
for(int j=0; j<col; j++)
{
file = @"c:/"+ i.ToString() + j.ToString() +".bmp";
if (j == col-1)
width = this.pictureBox1.Width - ((int)(this.pictureBox1.Width / col)) * j;
else
width = (int)(this.pictureBox1.Width / col);
if (i == row-1)
height = this.pictureBox1.Height - ((int)(this.pictureBox1.Height / row)) * i;
else
height = (int)(this.pictureBox1.Height / row);
Graphics g1 = this.pictureBox1.CreateGraphics();
bmp = new Bitmap(width, height, g1);
Graphics g2 = Graphics.FromImage(bmp);
dc1 = g1.GetHdc();
dc2 = g2.GetHdc();
BitBlt (dc2 , 0 , 0 , width , height , dc1 , left , top , 13369376 ) ;
g1.ReleaseHdc(dc1) ;
g2.ReleaseHdc(dc2) ;
g1.Dispose();
g2.Dispose();
bmp.Save(file, System.Drawing.Imaging.ImageFormat.Bmp);
left += width;
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Bitmap sepbitmap1= bb.Clone(new System.Drawing.Rectangle(0,0,20,20),System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Image image = System.Drawing.Image.FromFile("a.jpg",true);
Bitmap bmp = new Bitmap(400,400);
Graphics grap = Graphics.FromImage(bmp);
grap.Clear(Color.Transparent);
grap.DrawImage(image,new Rectangle(0,0,400,400));
如果a.jpg的大小是4000*4000,这样在新的图像中得到的就是左上角起的400*400的一部份.
若要10*10,则用循环就可实现
[System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]
private static extern bool BitBlt (
IntPtr hdcDest , // 目标 DC的句柄
int nXDest ,
int nYDest ,
int nWidth ,
int nHeight ,
IntPtr hdcSrc , // 源DC的句柄
int nXSrc ,
int nYSrc ,
System.Int32 dwRop // 光栅的处理数值
) ;
private void button1_Click(object sender, System.EventArgs e)
{
try
{
string file = null;
Bitmap bmp = null;
IntPtr dc1 = IntPtr.Zero;
IntPtr dc2 = IntPtr.Zero;
int row = 2, col = 2;
int left = 0, top =0 , width = 0, height = 0;
for(int i=0; i<row; i++)
{
left = 0;
top = i * ((int)(this.pictureBox1.Height / row));
for(int j=0; j<col; j++)
{
file = @"c:/"+ i.ToString() + j.ToString() +".bmp";
if (j == col-1)
width = this.pictureBox1.Width - ((int)(this.pictureBox1.Width / col)) * j;
else
width = (int)(this.pictureBox1.Width / col);
if (i == row-1)
height = this.pictureBox1.Height - ((int)(this.pictureBox1.Height / row)) * i;
else
height = (int)(this.pictureBox1.Height / row);
Graphics g1 = this.pictureBox1.CreateGraphics();
bmp = new Bitmap(width, height, g1);
Graphics g2 = Graphics.FromImage(bmp);
dc1 = g1.GetHdc();
dc2 = g2.GetHdc();
BitBlt (dc2 , 0 , 0 , width , height , dc1 , left , top , 13369376 ) ;
g1.ReleaseHdc(dc1) ;
g2.ReleaseHdc(dc2) ;
g1.Dispose();
g2.Dispose();
bmp.Save(file, System.Drawing.Imaging.ImageFormat.Bmp);
left += width;
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
- c#下分割图像的几种办法
- 转 c#下分割图像的几种办法
- 粘连图像分割的几种方法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- c# 解析JSON的几种办法
- ASP.NET Error: Failed to access IIS metabase
- 新的一天,新的心情
- HashMap IdentityHashMap
- 进程之间通讯方法
- 经典:面向对象编程,我的思想
- c#下分割图像的几种办法
- javascript 事件驱动杂谈
- 网格开发人员推荐阅读清单
- struts+spring+hibernate感悟
- 惰性编程和惰性求值
- 用Java实现文件分割/合并操作
- strstr
- 通过 Rails 在 Web 应用程序中使用 Ajax
- MPEG-4 AVC/H.264 信息