有关Imgur API和VB.NET的帮助-图片发布 [英] Help with Imgur API and VB.NET - Image POST

查看:43
本文介绍了有关Imgur API和VB.NET的帮助-图片发布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将图像发送到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆