有关Imgur API和VB.NET的帮助-图片发布 [英] Help with Imgur API and VB.NET - Image POST
问题描述
我正在尝试将图像发送到Imgur的服务器.一切正常,我从解析器中获取了图像的URL,但是当我尝试在Web浏览器上打开它时,却没有得到图像……只有一个损坏的图像"图标.>
我认为这是转换为字节数组的问题..但是我不明白.请让我知道/修改我的代码.
暗化图像为Image = image.FromFile(OpenFile.FileName)昏暗的毫秒作为新的MemoryStream()'将图像转换为字节[]image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg)昏暗imageBytes作为Byte()= ms.ToArray()昏暗的wb作为WebRequest = WebRequest.Create(新Uri("http://imgur.com/api/upload.xml"))wb.ContentType ="application/x-www-form-urlencoded"wb.Method =开机自检"wb.Timeout = 10000Console.WriteLine(imageBytes.Length)昏暗参数As String ="key = a801fa0b08a2117f5bb62b006f769b99& image =" + Convert.ToBase64String(imageBytes)昏暗的编码为新的System.Text.UTF8Encoding()昏暗的字节为Byte()= encoding.GetBytes(parameters)Dim os As System.IO.Stream =否尝试wb.ContentLength = bytes.Length操作系统= wb.GetRequestStream()os.Write(bytes,0,bytes.Length)昏暗的xmlData作为字符串= POSThandling.makePOSTrequest("http://imgur.com/api/upload.xml",新的String(){参数})昏暗的xmlDoc作为XmlDocument =新的XmlDocument()xmlDoc.LoadXml(xmlData)昏暗的名称为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 =新的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的帮助-图片发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!