Scribling Doodle Ответов: 1

Получение url-адреса из изображения, загруженного в imgur, с помощью API


Привет ребята,

Я пытаюсь отправлять отчеты по электронной почте. Но поскольку тело письма использует HTML, чтобы вставить изображение, вам нужно указать в этом абзаце правильный url-адрес.
Если это так, то я пытаюсь реализовать API imgur для извлечения ссылки загрузки и использования ее в строке, например:

< img= "">

Чтобы загрузить изображение, мне удалось найти этот код, который выводит необходимые значения. Но как я могу вернуть Имгур ?.

Этот код на самом деле использует изображение по умолчанию, как я могу изменить его, чтобы преобразовать изображение из picturebox?

Что я уже пробовал:

Код, который я должен просто загрузить изображение по умолчанию в imgur. Без извлечения строки ссылки, необходимой для использования в 1-м вопросе.
using (var w = new WebClient())
               {
                   using (var ms = new MemoryStream())
                   {
                       var values = new NameValueCollection
                       {
                       { "key", "2781d465a48c3e2" },
                       { "image", Convert.ToBase64String(File.ReadAllBytes(@"Default.jpg")) }
                       };

                       byte[] response = w.UploadValues("http://imgur.com/api/upload.xml", values);
                       Console.WriteLine(XDocument.Load(new MemoryStream(response)));
                   }
               }



Это дает мне такой вывод:

<data type="array" success="1" status="200">
  <id>T2O8lwI</id>
  <title />
  <description />
  <datetime>1496402171</datetime>
  <type>image/jpeg</type>
  <animated>false</animated>
  <width>600</width>
  <height>800</height>
  <size>53452</size>
  <views>0</views>
  <bandwidth>0</bandwidth>
  <vote />
  <favorite>false</favorite>
  <nsfw />
  <section />
  <account_url />
  <account_id>0</account_id>
  <is_ad>false</is_ad>
  <in_most_viral>false</in_most_viral>
  <tags />
  <ad_type>0</ad_type>
  <ad_url />
  <in_gallery>false</in_gallery>
  <deletehash>CKmIUBffASpWHTW</deletehash>
  <name />
  <link>http://i.imgur.com/T2O8lwI.jpg</link>
</data>

Richard Deeming

Почему бы просто не вставить изображение в сообщение? Таким образом, он будет отображаться даже в том случае, если пользователь заблокировал загрузку внешних изображений.

Отправка Электронной Почты С Использованием Встроенных Изображений[^]

1 Ответов

Рейтинг:
10

Richard Deeming

Ссылка на изображение находится прямо там, в XML; вам просто нужно прочитать ее.

var responseXml = XDocument.Load(new MemoryStream(response));
if ((int?)responseXml.Root.Attributes("success") == 1)
{
    string imageUrl = (string)responseXml.Root.Element("link");
    ...
}

Но, как я уже упоминал в комментариях, было бы гораздо проще встроить изображение непосредственно в сообщение.


Scribling Doodle

Поскольку я непосредственно хочу, чтобы мое приложение извлекло "ссылку" для хранения ее в строке, этот способ кажется гораздо более простым. Заранее спасибо за отличный ответ!