Как мне буферизовать изображение из внешней ссылки

2

У меня есть внешняя ссылка с изображением, которое я хочу передать, но я получаю эту ошибку, когда пытаюсь.

ошибка "Форматы URI не поддерживаются".

Я попытался передать: Поток fileStream = новый FileStream ( "http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg", FileMode.Open); byte [] fileContent = новый байт [fileStream.Length];

может ли кто-нибудь осветить это.

Спасибо

Теги:

2 ответа

0
Лучший ответ

FileStream не поддерживает открытые файлы через Интернет.

Попробуйте следующее:

var webClient = new WebClient();
using(var fileStream = webClient.OpenRead("http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg")) 
{
    byte[] fileContent = new byte[fileStream.Length];       
}
  • 0
    Я попробовал это, как это выглядело просто, но это не работает. я получаю следующее сообщение об ошибке: «Этот поток не поддерживает операции поиска».
  • 0
    я попробовал еще раз с небольшими изменениями, и это работает также. отличный материал. вместо потоковой передачи полного пути я беру часть изображения, как в примере выше: Image pic = Image.FromStream (fileStream);
4

Контрактор FileStream, который вы используете, должен быть предоставлен с помощью пути на вашем локальном жестком диске, а не с внешним URL-адресом.

Вероятно, вы ищете:

string url = "http://www.lokeshdhakar.com/projects/lightbox2/images/image-2.jpg";
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream stream = httpWebReponse.GetResponseStream();

Вероятно также для этого:

Image pic = Image.FromStream(stream);
MemoryStream ms = new MemoryStream();
pic.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Byte[] arr = ms.ToArray();
  • 0
    вау это действительно работает это значит, что изображение будет сохранено временно?
  • 0
    Это не будет временно сохранено на жестком диске. Вы можете, вероятно, получить байт [] от объекта потока. Я разместил второй фрагмент кода, чтобы показать вам, как у вас есть доступ к манипулированию изображением. Вы можете вставить свой алгоритм изменения размера изображения (google для c # resize image) там.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню