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