使用 webClient 保存网络驱动器照片
Saving network drive photo using webClient
嘿,我有以下 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 实际上来自它的超类 Image 和 returns 图像(您不能保证该文件将是实际的位图,而不是其他格式 - 如果您确定它,你必须将它转换为位图)
试试这个:
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
returns 可以直接传递以构建图像的流(无需将所有数据拉入字节数组)
不要使用方括号。但是使用括号并声明一个 new Bitmap
WebClient tClient = new WebClient();
string mImage = @"\the\path\photos\" + userID + ".jpg";
Bitmap tImage = new Bitmap(Bitmap.FromStream(new MemoryStream(tClient.DownloadData(mImage))));
请注意 convert the image to base 64 需要您的 byte[]
,您不妨从 tClient.DownloadData(mImage)
中获取
mImage = Convert.ToBase64String(tClient.DownloadData(mImage));
嘿,我有以下 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 实际上来自它的超类 Image 和 returns 图像(您不能保证该文件将是实际的位图,而不是其他格式 - 如果您确定它,你必须将它转换为位图)
试试这个:
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
returns 可以直接传递以构建图像的流(无需将所有数据拉入字节数组)
不要使用方括号。但是使用括号并声明一个 new Bitmap
WebClient tClient = new WebClient();
string mImage = @"\the\path\photos\" + userID + ".jpg";
Bitmap tImage = new Bitmap(Bitmap.FromStream(new MemoryStream(tClient.DownloadData(mImage))));
请注意 convert the image to base 64 需要您的 byte[]
,您不妨从 tClient.DownloadData(mImage)
mImage = Convert.ToBase64String(tClient.DownloadData(mImage));