Writing byte stream as jpeg format to disk
navkirats at gmail.com
Thu Aug 26 22:47:05 CEST 2010
On 27-Aug-2010, at 1:57 AM, MRAB wrote:
> On 26/08/2010 21:14, Navkirat Singh wrote:
>> On 27-Aug-2010, at 1:32 AM, Dave Angel wrote:
>>> Navkirat Singh wrote:
>>>> Hey guys,
>>>> I am programming a webserver, I receive a jpeg file with the POST
>>>> method.The file (.jpeg) is encoded in bytes, I parse the bytes by
>>>> decoding them to a string. I wanted to know how i could write the
>>>> file (now a string) as a jpeg image on disk. When I try to encode the
>>>> same string to a bytes and write them in binary format to disk, the
>>>> file is not recognized as jpeg. I would be grateful if someone could
>>>> help me with this.
>>> If by "decoding them to a string" you mean converting to Unicode, then
>>> you've already trashed the data. That's only valid if the bytes had
>>> been encoded from valid Unicode characters, and then only if you use
>>> the corresponding decoding technique.
>>> If you mean some other decoding, then the question is meaningless
>>> without telling us just what the decoding is, preferably with some code.
>>> It also might be useful to know what version of Python you're using,
>>> when you post the code.
>> I am using Python3 and I receive a byte stream with a jpeg attached sent
>> by the web browser over a socket, which looks like this:
>> b': image/jpeg\r\nAccept: text/*\r\nReferer:
>> http://127.0.0.1:8001/\r\nAccept-Language: en-us\r\nAccept-Encoding:
>> gzip, deflate\r\nContent-Length: 91783\r\nConnection:
>> From the above, I need to:
>> a) Split the header content from the image content, which comes after
>> the keep-alive\r\n\r\n part
>> b) Then write the image content to file for further use as a jpeg.
> image = header.split(b'keep-alive\r\n\r\n', 1)[-1]
> open(image_path, 'wb').write(image)
I think I forgot to mention that the original is a stream of bytes decoded using ISO-8859-1 as utf-8 trhrew errors (lack of knowlegdge again).
@MRAB - the split() method in python 3 works only on strings and throws an error if I try to use bytes
More information about the Python-list