【发布时间】:2020-07-14 18:00:13
【问题描述】:
我有此代码,但不起作用。我正在尝试从包含验证码的网站中提取图像。
var width = Images.First().Image.Width; //all images in list have the same width so i take the first
var height = 0;
for (int i = 104; i < 140; i++) //the list has 300 images. I have to get 36 that contains the captcha separated into pieces
{
height += Images[i].Image.Height;
}
var bitmap2 = new Bitmap(width, height);
var g = Graphics.FromImage(bitmap2);
height = 0;
for (int i = 104; i < 140; i++)
{
Image image = Images[i].Image;
g.DrawImage(image, 0, height);
height += image.Height;
}
bitmap2.Save(@"C:\Users\user\Desktop\test\test.png", ImageFormat.Png);
使用此代码,我得到以下结果:
我不知道为什么它的质量很差。我认为它正在重复记录在结果位图中的图像
【问题讨论】:
-
g.DrawImage 确实支持“GraphicUnits”。 docs.microsoft.com/en-us/dotnet/api/…与其他使用的单位有区别吗?
-
@SvenBardos 来测试这个我必须设置一个我不知道如何设置的 point[] 数组,但我认为图形单元没有区别
-
另一个想法:是g.DrawImage(image, 0, height -1); ?因为从 0/0 绘制高度,例如10 会给你一个来自 0/0;x/9 的图像当然对于第一次迭代高度应该用 1 初始化
-
@SvenBardos 已经尝试过 height-1 结果是一样的
-
总是在您的图形对象周围放置一个
using,以便在您尝试保存图像之前正确关闭它。