使用 Imgur API 和 VB.NET 的帮助 - Image POST [英] Help with Imgur API and VB.NET - Image POST
问题描述
我正在尝试将图像发送到 Imgur 的服务器.一切正常,我从解析器获取图像的 URL,但是当我尝试在网络浏览器上打开它时,我没有得到图像......只有一个损坏的图像"图标.>
我认为这是转换为字节数组的问题....但我不明白.请让我知道/修复我的代码.
Dim image As Image = image.FromFile(OpenFile.FileName)Dim ms As New MemoryStream()' 将图像转换为字节[]image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)Dim imageBytes As Byte() = ms.ToArray()Dim wb As WebRequest = WebRequest.Create(New Uri("http://imgur.com/api/upload.xml"))wb.ContentType = "application/x-www-form-urlencoded"wb.Method = "POST"wb.超时 = 10000Console.WriteLine(imageBytes.Length)Dim 参数 As String = "key=a801fa0b08a2117f5bb62b006f769b99&image=" + Convert.ToBase64String(imageBytes)Dim encoding As New System.Text.UTF8Encoding()Dim bytes As Byte() = encoding.GetBytes(parameters)Dim os As System.IO.Stream = 无尝试wb.ContentLength = bytes.Lengthos = wb.GetRequestStream()os.Write(bytes, 0, bytes.Length)Dim xmlData As String = POSThandling.makePOSTrequest("http://imgur.com/api/upload.xml", New String() {parameters})Dim xmlDoc As XmlDocument = New XmlDocument()xmlDoc.LoadXml(xmlData)Dim name As XmlNodeList = xmlDoc.GetElementsByTagName("original_image")Dim imageText As String = (name(0).InnerText).ToStringmessageText.Text = imageText.ToStringPanelUpload.Visible = FalseUpImage.Enabled = TrueSendMsg.Enabled = True最后如果不是(操作系统什么都没有)那么万一结束尝试
这里是 C# 中的 Imgur API 示例
http://api.imgur.com/examples#uploading_cs
要回答您的问题,您需要先将图像读入字节数组.然后将原始字节数组转换为 Base64 编码的字符串
FileStream fileStream = File.OpenRead(imageFilePath);byte[] imageData = new byte[fileStream.Length];fileStream.Read(imageData, 0, imageData.Length);fileStream.Close();字符串 base64EncodedImage = System.Convert.ToBase64String(imageData);
I'm trying to send an image to Imgur's server. Everything went fine and I'm getting the URL of the image from the parser but when I'm trying to open it on the web browser, I'm not getting the image... only a "broken image" icon.
I think it's a problem in the convertion to the byte array.... but I don't get it. please let me know/fix my code.
Dim image As Image = image.FromFile(OpenFile.FileName)
Dim ms As New MemoryStream()
' Convert Image to byte[]
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim imageBytes As Byte() = ms.ToArray()
Dim wb As WebRequest = WebRequest.Create(New Uri("http://imgur.com/api/upload.xml"))
wb.ContentType = "application/x-www-form-urlencoded"
wb.Method = "POST"
wb.Timeout = 10000
Console.WriteLine(imageBytes.Length)
Dim parameters As String = "key=a801fa0b08a2117f5bb62b006f769b99&image=" + Convert.ToBase64String(imageBytes)
Dim encoding As New System.Text.UTF8Encoding()
Dim bytes As Byte() = encoding.GetBytes(parameters)
Dim os As System.IO.Stream = Nothing
Try
wb.ContentLength = bytes.Length
os = wb.GetRequestStream()
os.Write(bytes, 0, bytes.Length)
Dim xmlData As String = POSThandling.makePOSTrequest("http://imgur.com/api/upload.xml", New String() {parameters})
Dim xmlDoc As XmlDocument = New XmlDocument()
xmlDoc.LoadXml(xmlData)
Dim name As XmlNodeList = xmlDoc.GetElementsByTagName("original_image")
Dim imageText As String = (name(0).InnerText).ToString
messageText.Text = imageText.ToString
PanelUpload.Visible = False
UpImage.Enabled = True
SendMsg.Enabled = True
Finally
If Not (os Is Nothing) Then
End If
End Try
Here is the Imgur API example in C#
http://api.imgur.com/examples#uploading_cs
To answer your question, you need to first read the image into an array of bytes. Then convert the raw byte array into a Base64 encoded string
FileStream fileStream = File.OpenRead(imageFilePath);
byte[] imageData = new byte[fileStream.Length];
fileStream.Read(imageData, 0, imageData.Length);
fileStream.Close();
string base64EncodedImage = System.Convert.ToBase64String(imageData);
这篇关于使用 Imgur API 和 VB.NET 的帮助 - Image POST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!