Skip to content

Instantly share code, notes, and snippets.

@0x48piraj
Created April 6, 2020 00:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 0x48piraj/994f8b20c2514ca9853d5da0826c69b8 to your computer and use it in GitHub Desktop.
Save 0x48piraj/994f8b20c2514ca9853d5da0826c69b8 to your computer and use it in GitHub Desktop.
Receiving Images From a Raspberry Pi via Python Sockets
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')
count = 0
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)
image.save("{}.jpeg".format(count))
print('Image is %dx%d' % image.size)
image.verify()
print('Image is verified')
count+=1
finally:
connection.close()
server_socket.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment