[Gambas-user] Using a socket to download an image. Please Help ^_^

Ron ron at ...1740...
Sun Nov 30 22:00:53 CET 2008


I use this to fetch an jpg image from my videoserver and store in my 
MySQL db.
Maybe it can help you  guys.

PRIVATE hDownloadImage AS NEW HttpClient

PRIVATE sGetImgUrl AS String
PRIVATE iCamPub AS Integer

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' grab image from channel #iCam and store it in our database
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PUBLIC SUB DownloadImage(sUrl AS String)

  DIM sDownload AS String

  hDownloadImage = NEW HttpClient AS "Download"
  hDownloadImage.URL = "http://" & sUrl
  hDownloadImage.Async = FALSE
  hDownloadImage.TimeOut = 3
  hDownloadImage.Get()

  IF hDownloadImage.Status < 0 THEN
    IF Main.bVideoServerDebug THEN Main.WriteDebugLog("[VideoServer] 
Error downloading image " & sUrl)
  ELSE
    ' success - read the data
    IF Lof(hDownloadImage) THEN READ #hDownloadImage, sDownload, 
Lof(hDownloadImage)
  END IF
  SaveCapture(sDownload)

END

PUBLIC SUB SaveCapture(sBuffer AS String)

  DIM rResult AS Result

  ' write image to capture table
  Main.hDB.Begin()
  rResult = Main.hDB.Create("capture_camera" & iCamPub)
  rResult!image = sBuffer
  rResult!stamp = Now()
  rResult.Update()
  Main.hDB.Commit()

END

Regards,
Ron_2nd.
> On Mon, 1 Dec 2008 06:50:06 am Robert Moss wrote:
>
> Robert this may not be much help to you and I'm not sure how related to your 
> problem it is,  but just on the off chance. I struggled with saving a picture 
> and retrieving from a postgres field. 
>
> The code I included worked really well for a long time, but in the last couple 
> of upgrades though it saves the file ok, it retreives a corrupt image. and I 
> get a libpng error (sob sob) and I havn't had time or inclination to re-look 
> at it.
>
> Please if/when you figure it out can I have a few pointers.
>
> Regards
>
> Richard
>
>
>
>   
>> The ImgData stops writing when it comes to a byte with value &H00 (I
>> believe) although I'm pretty sure it doesn't matter how I write the stream,
>> once it's read as a String, it becomes terminated by any NULL char. So my
>> question is this: How do I read the data from the Socket in binary, write
>> it to a stream file in binary, but STILL I MUST be able to split the data
>> based on the 2 CRLF's
>>
>> On Sun, Nov 30, 2008 at 11:48 AM, Robert Moss 
>>     
> <the.at.robert at ...626...>wrote:
>   
>>> Sorry that's not it, I mis-copied the line, in the actual code it does
>>> Mid(sData, p1 + 4)
>>>
>>> On Sun, Nov 30, 2008 at 2:39 AM, Doriano Blengino <
>>>
>>> doriano.blengino at ...1909...> wrote:
>>>       
>>>> Robert Moss ha scritto:
>>>>         
>>>>> I am trying to get an image (or any binary data) downloaded from a
>>>>>           
>>>> website
>>>>
>>>>         
>>>>> and into a jpg file. I expect I will need to use the Byte[] datatype,
>>>>>           
>>>> but I
>>>>
>>>>         
>>>>> absolutely can NOT use Callbacks when the data comes in this time.
>>>>>
>>>>> ...
>>>>>
>>>>> DO UNTIL(EOF(#Sock))
>>>>>     READ #Sock, sBuf, Lof(Sock)
>>>>>     sTotal &= sBuf
>>>>> LOOP
>>>>>
>>>>> CLOSE #Sock
>>>>>
>>>>>
>>>>> p1 = InStr(sTotal, "\r\n\r\n")
>>>>>
>>>>> ImgData = Mid(sTotal, p1)
>>>>>
>>>>> OPEN "localimg.jpg" FOR OUTPUT CREATE AS #myFile
>>>>> WRITE #myFile, ImgData, Len(ImgData)
>>>>> CLOSE #myFile
>>>>>           
>>>> I think there is a problem with InStr(...,"\r\n\r\n").
>>>> By taking mid$(...,p1), you retain the two CRLFs, which are not good at
>>>> the beginning of a jpeg file.
>>>> You should get rid of the first 4 characters. May be there are still
>>>> other problems, but this is one for sure.
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> Doriano Blengino
>>>>
>>>> "Listen twice before you speak.
>>>> This is why we have two ears, but only one mouth."
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>> - This SF.Net email is sponsored by the Moblin Your Move Developer's
>>>> challenge
>>>> Build the coolest Linux based applications with Moblin SDK & win great
>>>> prizes
>>>> Grand prize is a trip for two to an Open Source event anywhere in the
>>>> world
>>>> http://moblin-contest.org/redirect.php?banner_id=100&url=/
>>>> _______________________________________________
>>>> Gambas-user mailing list
>>>> Gambas-user at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>         
>> -------------------------------------------------------------------------
>> This SF.Net email is sponsored by the Moblin Your Move Developer's
>> challenge Build the coolest Linux based applications with Moblin SDK & win
>> great prizes Grand prize is a trip for two to an Open Source event anywhere
>> in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>     
>
>
>   
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> ------------------------------------------------------------------------
>
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user





More information about the User mailing list