gpt4 book ai didi

c# - 使用 webClient 保存网络驱动器照片

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:12 24 4
gpt4 key购买 nike

嘿,我有以下 VB.net 代码,我需要将其转换为 C#:

 Dim tClient As WebClient = New WebClient
Dim imgLink As String = "\\the\path\photos\" + userID + ".jpg"
Dim tImage As Bitmap = Bitmap.FromStream(New MemoryStream(tClient.DownloadData(imgLink)))

Dim mImage As String = ImageToBase64(tImage, System.Drawing.Imaging.ImageFormat.Jpeg)

这在 VB 中工作得很好,但是当我尝试将它转换为 C# 时:

WebClient tClient = new WebClient();
string mImage = @"\\the\path\photos\" + userID + ".jpg";
Bitmap tImage = Bitmap.FromStream[new MemoryStream[tClient.DownloadData(mImage)]];

mImage = ImageToBase64(tImage, System.Drawing.Imaging.ImageFormat.Jpeg);

它在 tClient.DownloadData(imagePath) 上有一个错误说:

Error 7 Cannot implicitly convert type 'byte[]' to 'int'

在 C# 中定义它的正确方法是什么?

最佳答案

有几个问题:

  • 您在 Bitmap.FromStream 和 MemoryStream 构造函数中混淆了数组运算符括号 [ 和函数调用 ( 括号
  • 您一次下载整个文件,只是为了将其加载到流中 - 这违背了流式传输的目的
  • Bitmap.FromStream 实际上来自它的父类(super class) Image,并返回一个 Image(您不能保证该文件将是实际的位图,而不是其他格式 - 如果您确定它,则必须强制转换它到位图)

试试这个:

WebClient tClient = new WebClient();
string mImage = @"\\the\path\photos\" + userID + ".jpg";
Bitmap tImage = (Bitmap)Bitmap.FromStream(tClient.OpenRead(mImage));

mImage = ImageToBase64(tImage, System.Drawing.Imaging.ImageFormat.Jpeg);

WebClient.OpenRead 返回一个流,您可以直接传递它来构建图像(无需将所有数据拉到字节数组)

关于c# - 使用 webClient 保存网络驱动器照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35557870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com