On Monday, July 16, 2018 at 3:52:09 PM UTC+3, iMath wrote:
> I also posted the question here
> https://stackoverflow.com/questions/51355926/send-pil-image-to-django-server-side-and-get-it-back
> 
> I don't know what's under the hood of sending an image from client side to 
> server side, so stuck by the following scenario.
> 
> I want to send a PIL.Image object to django server side using the Python 
> requests lib and get it back in order to use the PIL.Image object on server 
> side. As I have tested , if sent the PIL.Image object without any conversion 
> , that is
> 
> r = requests.post(SERVER_URL,
>                 data={
>                     'image': PILimage,#PILimage is of type PIL.Image
>                     'wordPos':(86,23)
>                     },
>                 )
> then I just got a str object with value  <PIL.PngImagePlugin.PngImageFile 
> image mode=RGB size=149x49 at 0x13F25D0> on server side, I guess it was 
> caused by  requests, which converted the PIL.Image object to a str object 
> before sending, so why  requestsdo the conversion ? why cannot we send the 
> PIL.Image object without any conversion over the Internet ? please give some 
> explanation here, thanks!

You need first to serialize the object to bytes that can go over the wire. 
There is no predefined way to do that, so you can:

>>> import io
>>> file_like_object = io.BytesIO()
>>> PILImage.save(file_like_object, format='png')

and then in your POST request send file_like_object.getvalue() as the image 
data.  You will most probably need to add a Content-Type: image/png as a header.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to