Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как загрузить картинку через Winsock в Picturebox? Добавлено: 15.08.08 14:53  

Автор вопроса:  Petruha

Пытаюсь например загрузить с google картинку методом GET
...
webimg1 = "/logos/olympics08_badminton.gif" 'путь
Winsock1.SendData "GET " & webimg1 & " HTTP/1.0" & vbCrLf & vbCrLf
...

А процедура приема ответа не хочет работать блин

Private Sub winsock1_dataArrival(ByVal BytesTotal As Long)
Dim Data As Byte
Winsock1.GetData Data
Picture1.Picture = Data
End Sub

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

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #1
Добавлено: 15.08.08 16:46
Dim Data As Byte
Winsock1.GetData Data
Picture1.Picture = Data

Если я всё правильно понял, ты объявляешь Data как однобайтовую переменную, получаешь через винсок один байт и говоришь, что Picture1.Picture равно этому одному байту.
Так?

Текст нормально загружаю а вот картинку не получается.

Вариант: загрузить картинку как текст (в String), записать на диск как *.gif (или что у тебя там...), прочитать в Picture через LoadPicture.

Ответить

Номер ответа: 2
Автор ответа:
 Petruha



Вопросов: 3
Ответов: 4
 Профиль | | #2 Добавлено: 15.08.08 20:04
Dim sData As String
Winsock1.GetData sData, vbString, BytesTotal

'Picture1.Picture = sData

Open "C:\Shot1.gif" For Binary As #1
Put #1, , sData
Close #1

Шутники! Не работает всеравно, а на диск записывается какойто мусор. Но както же рисунок прямо в picturebox загружают.....но вот как ?
Блин нигде не могу найти пример :)

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 15.08.08 21:48
на диск записывается какойто мусор

В каком смысле мусор? Ответ должен состоять из заголовка и файла .gif
Советую открыть мусор в блокноте и посмотреть что там.

Ответить

Номер ответа: 4
Автор ответа:
 Petruha



Вопросов: 3
Ответов: 4
 Профиль | | #4 Добавлено: 15.08.08 22:20
Вообщем то да, Серёга прав, может кому пригодится, проблема почти решилась так:
Если запрос к GIF то ответ будет состоять из HTTP плюс GIF - т.е. надо из данных отлавливать начало
GIF89a...
Я поленился и тупо обрезал
sData = Mid(sData, 309) получаем чистый GIF
Сохраняем на диск, потом с диска загружаем picturebox
 тогда в picturebox есть картинка!

Но как напрямую закинуть данные в picturebox минуя запись на диск ?
Код получился такой:
...
Dim sData As String
Winsock1.GetData sData
sData = Mid(sData, 309) 'тупо обрезаю до начала GIF
Open "C:\shot1.gif" For Binary As #1
Put #1, , sData
Close #1
Rem Picture1.Picture = sData 'Это не работает
Picture1.Picture = LoadPicture("C:\shot1.gif";)
...
Если пытаться загружать JPEG то загружается мусор без заголовка. Бред какойто :)

Ответить

Номер ответа: 5
Автор ответа:
 Petruha



Вопросов: 3
Ответов: 4
 Профиль | | #5 Добавлено: 15.08.08 22:29
А вот еще поправка, просто нельзя так лениво обрезать, заголовок HTTP ответа меняет свою длину и иногда можно срезать больше чем надо, но всеравно проблема остается прямой передачи картинки в picturebox минуя запись на диск.

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 16.08.08 13:05
После заголовка всегда идет vbcrlf & vbcrlf. Это раз.
Где-то я видел перевод картинки из OLE Picture к стандартной виндовой с хэндлом и обратно. Вот ищи ее, а там уж можно переделать под твои нужды.

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 16.08.08 13:06
Нулевые символы он тебе в строку через винсок может и не загрузить. Это я про JPEG.

Ответить

Номер ответа: 8
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #8
Добавлено: 16.08.08 19:39
Если пытаться загружать JPEG то загружается мусор без заголовка. Бред какойто :)

Запрос то покажи. Может в нем что не так?

Где-то я видел перевод картинки из OLE Picture к стандартной виндовой с хэндлом и обратно

Я тоже где то такое видел, но там помойму нужен именно файл, а вот как нарисовать картинку, когда у тебя есть только образ файла в памяти - не знаю.
Если кто знает - делитесь.

Ответить

Номер ответа: 9
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #9
Добавлено: 17.08.08 01:58
там нужно содержимое файла, а не файл)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам