Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 20.07.2019, 16:08   #1
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 612
Репутация: 101
По умолчанию не загружается картинка из Stream на windows 7

Здравствуйте.
Нужно в PictureBox отобразить картинку из интернета по ссылке.
Код:
        private void Button1_Click(object sender, EventArgs e)
        {
            string t = "https://static-cdn.jtvnw.net/s3_vods/f68fa7beca9772f09629_miramisu_34965630880_1254021709/thumb/custom-fba2206f-64ec-4c99-b025-bb92141038c2-640x360.png";
            WebClient wc = new WebClient();
            try
            {
                Stream str = wc.OpenRead(t); //здесь ошибка, если запускать программу на windows 7
                pictureBox1.Image = Image.FromStream(str);

            }
            catch
            {
                MessageBox.Show("error");
            }
            wc.Dispose();
        }
на windows 10 это работает, а на windows 7 выдается сообщение "error".
в чем прикол?
BLACK_RAIN вне форума   Ответить с цитированием
Старый 21.07.2019, 02:04   #2
Black Fregat
Программист
Профессионал
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,505
Репутация: 1038
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
на windows 7 выдается сообщение "error"
А вывести вместо этого "error" информацию об исключении?
Black Fregat вне форума   Ответить с цитированием
Старый 21.07.2019, 09:13   #3
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 612
Репутация: 101
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
А вывести вместо этого "error" информацию об исключении?
пишет это: Запрос был прерван: Не удалось создать защищенный канал SSL/TLS..
если скачать файлы libeay32.dll и ssleay32.dll, начинает писать это: Невозможно разрешить удаленное имя: 'static-cdn.jtvnw.net'.
BLACK_RAIN вне форума   Ответить с цитированием
Старый 02.08.2019, 16:44   #4
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 612
Репутация: 101
По умолчанию

И что с этим делать-то? Даже профессионалы не в курсе?
BLACK_RAIN вне форума   Ответить с цитированием
Старый 03.08.2019, 02:31   #5
rudnight
 
Регистрация: 29.07.2019
Сообщений: 5
Репутация: 10
По умолчанию

Добавь
Код:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
от версии 4.0 Net
И вообще если ты хочешь передать картинку в PictureBox то используй так:

Код:
var request = WebRequest.Create("https://static-cdn.jtvnw.net/s3_vods/f68fa7beca9772f09629_miramisu_34965630880_1254021709/thumb/custom-fba2206f-64ec-4c99-b025-bb92141038c2-640x360.png");

using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    pictureBox1.Image = Bitmap.FromStream(stream);
}
rudnight вне форума   Ответить с цитированием
Старый 03.08.2019, 02:35   #6
rudnight
 
Регистрация: 29.07.2019
Сообщений: 5
Репутация: 10
По умолчанию

Или можешь попробовать использовать напрямую
Код:
yourPictureBox.ImageLocation = "https://static-cdn.jtvnw.net/s3_vods/f68fa7beca9772f09629_miramisu_34965630880_1254021709/thumb/custom-fba2206f-64ec-4c99-b025-bb92141038c2-640x360.png"
И да не используй всё в конструкторе кнопке, лучше создай отдельный метод и задай им аргументы.
rudnight вне форума   Ответить с цитированием
Старый 03.08.2019, 08:01   #7
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 612
Репутация: 101
По умолчанию

Цитата:
Сообщение от rudnight Посмотреть сообщение
System.Net.ServicePointManager.Secu rityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
Действительно,заработало.
Цитата:
Сообщение от rudnight Посмотреть сообщение
И вообще если ты хочешь передать картинку в PictureBox то используй так:
Код:
var request = WebRequest.Create("https://static-cdn.jtvnw.net/s3_vods/f68fa7beca9772f09629_miramisu_34965630880_1254021709/thumb/custom-fba2206f-64ec-4c99-b025-bb92141038c2-640x360.png");

using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    pictureBox1.Image = Bitmap.FromStream(stream);
}
А почему именно так? Ведь мы в обоих случаях обращаемся ко всем переменным по их именам. Зачем тогда нужны два лишних using?

Цитата:
Сообщение от rudnight
И да не используй всё в конструкторе кнопке
почему?
BLACK_RAIN вне форума   Ответить с цитированием
Старый 04.08.2019, 03:04   #8
rudnight
 
Регистрация: 29.07.2019
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
А почему именно так?
WebClient - это абстракция более высокого уровня, созданная поверх HttpWebRequest для упрощения наиболее распространенных задач.


Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
Зачем тогда нужны два лишних using?
Для освобождения ресурсов, в WebClient'e своём тоже заверните его в using

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
почему?
Потому что разделённые методы по классам смотрятся куда более привлекательнее на глаз нежели всё в одном конструкторе какой-то кнопки.

Создаёте метод:

Код:
public static void GetPictureFromUrl(PictureBox box, string url)
{
   try 
   {
      Uri link = new Uri(url, UriKind.Absolute);
      System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
      using (WebClient wc = new WebClient())
      using (Stream str = wc.OpenRead(link)) 
      {
          box.Image = Image.FromStream(str);
      }
   } catch (Exception ex) { MessageBox.Show(ex.Message);}
   // Dispose не нужен! WebClient сам освобождается после использования благодаря using.
}
В обработчик кнопки:

Код:
private void Button1_Click(object sender, EventArgs e)
{
    // Вызываем наш метод и передаём ему аргументы.
    GetPictureFromUrl(pictureBox1, "https://static-cdn.jtvnw.net/s3_vods/f68fa7beca9772f09629_miramisu_34965630880_1254021709/thumb/custom-fba2206f-64ec-4c99-b025-bb92141038c2-640x360.png");
}
rudnight вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не загружается картинка в Image Xo66um Общие вопросы Delphi 2 08.06.2014 18:54
Загружается одна и та же картинка в WebBrowser rafffkaaa Работа с сетью в Delphi 2 19.11.2012 21:54
Не загружается картинка в Image Вадим12091965 Microsoft Office Excel 1 06.11.2012 16:43
Не загружается windows... prizrak1390 Свободное общение 9 08.06.2010 11:10
Не загружается windows xp haooss Windows 5 15.11.2009 00:26


23:57.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.