仅作记录,用于 .NET6.0
为 HTMLAgilityPack 的 HtmlWeb 设置 Headers/Cookie/UA
var htmlWeb = new HtmlWeb(); htmlWeb.UserAgent = My.UA; htmlWeb.PreRequest += request => { request.Headers.Add(My.Headers); return true; };
图片/文件下载
var uri = new Uri(someImageUri); var uriWithoutQuery = uri.GetLeftPart(UriPartial.Path); var fileExtension = Path.GetExtension(uriWithoutQuery); var path = $"{SomePath}{fileName}{fileExtension}"; var imageBytes = await client.GetByteArrayAsync(achievement.IconUri); await File.WriteAllBytesAsync(iconPath, imageBytes);
(新建路径/文件时)去除特殊字符
// 路径 string.Join("_", achievement.Name.Split(Path.GetInvalidPathChars())) // 文件 string.Join("_", achievement.Name.Split(Path.GetInvalidFileNameChars()))
新建路径中包含 "/" 时防不住,还是要手动过滤
Console 清空本行
string ClearCurrentLine = "\r" + new string(' ', Console.WindowWidth) + "\r"; Console.Write(ClearCurrentLine);
修改图片大小(Resizing Image)
用到了 Magick.NET 库,安装时选择 Magick.NET-Q16-AnyCPU
using ImageMagick; var size = new MagickGeometry(64, 64); //size.IgnoreAspectRatio = false/true; using var image = new MagickImage(imagePath); image.Resize(size); await image.WriteAsync(imagePath);
上述代码是通过文件方式打开图片,也可以直接传字节流
using var image = new MagickImage(imageBytes);
与下载图片衔接,实现下载后直接修改大小,然后保存
var uriWithoutQuery = achievement.IconUri.GetLeftPart(UriPartial.Path); var fileExtension = Path.GetExtension(uriWithoutQuery); var imagePath = $"{fileName}{fileExtension}"; var imageBytes = await client.GetByteArrayAsync(achievement.IconUri); // Resizing using var image = new MagickImage(imageBytes); image.Resize(size); await image.WriteAsync(imagePath);