有关于bmpobj.Clone显示内存解决办法

sky_too_sky 2010-07-27 04:21:23
public void GetPicValidByValue(int dgGrayValue, int CharsCount)
{
int posx1 = bmpobj.Width; int posy1 = bmpobj.Height;
int posx2 = 0; int posy2 = 0;
for (int i = 0; i < bmpobj.Height; i++) //找有效区
{
for (int j = 0; j < bmpobj.Width; j++)
{
int pixelValue = bmpobj.GetPixel(j, i).R;
if (pixelValue < dgGrayValue) //根据灰度值
{
if (posx1 > j) posx1 = j;
if (posy1 > i) posy1 = i;

if (posx2 < j) posx2 = j;
if (posy2 < i) posy2 = i;
};
};
};
// 确保能整除
int Span = CharsCount - (posx2 - posx1 + 1) % CharsCount; //可整除的差额数
if (Span < CharsCount)
{
int leftSpan = Span / 2; //分配到左边的空列 ,如span为单数,则右边比左边大1
if (posx1 > leftSpan)
posx1 = posx1 - leftSpan;
if (posx2 + Span - leftSpan < bmpobj.Width)
posx2 = posx2 + Span - leftSpan;
}
//复制新图
Rectangle cloneRect = new Rectangle(posx1, posy1, posx2 - posx1 + 1, posy2 - posy1 + 1);

bmpobj = bmpobj.Clone(cloneRect, bmpobj.PixelFormat);
}
程序运行到bmpobj = bmpobj.Clone(cloneRect, bmpobj.PixelFormat);报出内存不足错误
这个问题有人问过。但是小弟还是不太明白。劳烦各位指明道路(源码谢谢。比较笨,呵呵)!!
...全文
116 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_too_sky 2010-07-27
  • 打赏
  • 举报
回复
恩。这个我也不清楚。但是用了其他bmpobj1还是一样的报错,这个问题:
边城的刀声 2010-07-27
  • 打赏
  • 举报
回复
bmpobj = bmpobj.Clone(cloneRect, bmpobj.PixelFormat);
你怎么自己往 自己复制呢。
sky_too_sky 2010-07-27
  • 打赏
  • 举报
回复
这个是CSDN上下载的关于破解简单验证码的类,压根不动这些。本来想着直接用就行了。没想遇见问题。。。。。
mayonglong 2010-07-27
  • 打赏
  • 举报
回复
每次都是这样吗?建议尽量用using(){};

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧