Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2019, 15:08   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию не загружается картинка из 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, 01:04   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

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

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

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

Добавь
Код:
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, 01:35   #6
rudnight
 
Регистрация: 29.07.2019
Сообщений: 5
По умолчанию

Или можешь попробовать использовать напрямую
Код:
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, 07:01   #7
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от 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, 02:04   #8
rudnight
 
Регистрация: 29.07.2019
Сообщений: 5
По умолчанию

Цитата:
Сообщение от 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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не загружается картинка в 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 14.11.2009 23:26