Writing byte stream as jpeg format to disk
Navkirat Singh
navkirats at gmail.com
Thu Aug 26 17:48:56 EDT 2010
On 27-Aug-2010, at 3:02 AM, Robert Kern wrote:
> On 8/26/10 4:17 PM, Navkirat Singh wrote:
>
>> Here is what I needed to do:
>>
>> a) Separate image content from header content of the byte stream received from the web browser.
>> b) Save the image content to disk for further use.
>>
>> Here is what I did. Following is just a snippet:
>>
>>
>> #-------------HERE IS WHERE I RECEIVE THE DATA
>> while True:
>> buff = socket.recv(8192)
>> byteStr +=buff
>> if not buff: break
>> #--------------ENCODING/DECODING STARTS FROM HERE (since I want to use split/partition functions to separate header content from the image content)
>> strMsg = byteStr.decode("ISO-8859-1")
>> listMsg = strMsg.split('\r\n')
>> #----------------------------
>> # do some more processing to search the list for the image content, say supposing index is 11
>> #---------------------------
>> imageStr = listMsg[11].encode("ISO-8859-1") #Transform the byte string just the way I found it
>
> If your JPEG happens to contain the bytes \r\n, then this will not work. Please follow our advice. Split using b'\r\n\r\n' and use the maxsplit=1 argument to make sure that you do not split on spurious b'\r\n\r\n' sequences inside the JPEG body. Do not decode the bytes.
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless enigma
> that is made terrible by our own mad attempt to interpret it as though it had
> an underlying truth."
> -- Umberto Eco
>
> --
> http://mail.python.org/mailman/listinfo/python-list
Thanks Robert,
My method worked too, I was able to do the above and save the jpeg flawlessly, but your method seems better as I will not have to take the extra step of encoding/decoding.
More information about the Python-list
mailing list