12345678910111213141516171819202122232425262728293031323334 |
- import io
- import socket
- import struct
- from PIL import Image
-
- # Start a socket listening for connections on 0.0.0.0:8000 (0.0.0.0 means
- # all interfaces)
- server_socket = socket.socket()
- server_socket.bind(('0.0.0.0', 8000))
- server_socket.listen(0)
-
- # Accept a single connection and make a file-like object out of it
- connection = server_socket.accept()[0].makefile('rb')
- try:
- while True:
- # Read the length of the image as a 32-bit unsigned int. If the
- # length is zero, quit the loop
- image_len = struct.unpack('<L', connection.read(struct.calcsize('<L')))[0]
- if not image_len:
- break
- # Construct a stream to hold the image data and read the image
- # data from the connection
- image_stream = io.BytesIO()
- image_stream.write(connection.read(image_len))
- # Rewind the stream, open it as an image with PIL and do some
- # processing on it
- image_stream.seek(0)
- image = Image.open(image_stream)
- print('Image is %dx%d' % image.size)
- image.verify()
- print('Image is verified')
- finally:
- connection.close()
- server_socket.close()
|