我在做一个签章图片的处理,指定白色区域透明;并将图片以png格式存储到硬盘上了;
但是,在第一次执行程序的时候,正常执行;第二次执行的时候,出现中断,请各位大侠帮我分析一下;
if (openFile.ShowDialog() == DialogResult.OK)
{ m_old_p = Path.GetDirectoryName(openFile.FileName);
Bitmap bmp = new Bitmap(Image.FromFile(openFile.FileName), Image.FromFile(openFile.FileName).Size);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = data.Stride * data.Height;
IntPtr ptr = data.Scan0;
byte[] buff = new byte[length];
Marshal.Copy(ptr, buff, 0, length);
for (int i = 3; i < length; i += 4)
{
if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230)
{
buff[i] = 0;
}
}
Marshal.Copy(buff, 0, ptr, length);
bmp.UnlockBits(data); Stamp_Image_Box.Image = bmp; bmp.Save(m_img_save, System.Drawing.Imaging.ImageFormat.Png);
bmp.Dispose(); CheckImage(m_img_save);
}
但是,在第一次执行程序的时候,正常执行;第二次执行的时候,出现中断,请各位大侠帮我分析一下;
if (openFile.ShowDialog() == DialogResult.OK)
{ m_old_p = Path.GetDirectoryName(openFile.FileName);
Bitmap bmp = new Bitmap(Image.FromFile(openFile.FileName), Image.FromFile(openFile.FileName).Size);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = data.Stride * data.Height;
IntPtr ptr = data.Scan0;
byte[] buff = new byte[length];
Marshal.Copy(ptr, buff, 0, length);
for (int i = 3; i < length; i += 4)
{
if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230)
{
buff[i] = 0;
}
}
Marshal.Copy(buff, 0, ptr, length);
bmp.UnlockBits(data); Stamp_Image_Box.Image = bmp; bmp.Save(m_img_save, System.Drawing.Imaging.ImageFormat.Png);
bmp.Dispose(); CheckImage(m_img_save);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货