IoT Client und Changes vom Herzeigen
BIN
iotclient/bild_mit_metadaten.jpg
Normal file
|
After Width: | Height: | Size: 3.8 MiB |
BIN
iotclient/bild_ohne_metadaten.jpg
Normal file
|
After Width: | Height: | Size: 227 KiB |
BIN
iotclient/bild_ohne_metadaten2.jpg
Normal file
|
After Width: | Height: | Size: 108 KiB |
78
iotclient/client.py
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
from tkinter import *
|
||||||
|
from PIL import ImageTk,Image
|
||||||
|
from PIL.ExifTags import TAGS
|
||||||
|
import io
|
||||||
|
import dropbox
|
||||||
|
import base64
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def print_response(response):
|
||||||
|
print("Code: " + str(response.status_code) + "; Body: " + str(response.json()))
|
||||||
|
|
||||||
|
def show_image(pil_image):
|
||||||
|
root = Tk()
|
||||||
|
canvas = Canvas(root, width = pil_image.size[0], height = pil_image.size[1])
|
||||||
|
canvas.pack()
|
||||||
|
img = ImageTk.PhotoImage(pil_image)
|
||||||
|
canvas.create_image(20, 20, anchor=NW, image=img)
|
||||||
|
root.mainloop()
|
||||||
|
|
||||||
|
def print_metadata(pil_image):
|
||||||
|
exifdata = pil_image.getexif()
|
||||||
|
print("found " + str(len(exifdata)) + " metadata tags")
|
||||||
|
for tag_id in exifdata:
|
||||||
|
# get the tag name, instead of human unreadable tag id
|
||||||
|
tag = TAGS.get(tag_id, tag_id)
|
||||||
|
data = exifdata.get(tag_id)
|
||||||
|
# decode bytes
|
||||||
|
if isinstance(data, bytes):
|
||||||
|
data = data.decode()
|
||||||
|
print(f"{tag:25}: {data}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#path = "bild_mit_metadaten" + ".jpg"
|
||||||
|
path = "bild_ohne_metadaten2" + ".jpg"
|
||||||
|
im = Image.open(path)
|
||||||
|
|
||||||
|
#show_image(im)
|
||||||
|
#print_metadata(im)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
global b64_file
|
||||||
|
|
||||||
|
with open(path, "rb") as image_file:
|
||||||
|
b64_file = base64.b64encode(image_file.read())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
payload = b64_file.decode('utf-8')
|
||||||
|
|
||||||
|
#Bild lokal encoden (spiel Server zum testen)
|
||||||
|
#encoded_bytes = payload.encode('utf-8')
|
||||||
|
#decoded_file = base64.b64decode(encoded_bytes)
|
||||||
|
#img2 = Image.open(io.BytesIO(decoded_file))
|
||||||
|
#show_image(img2)
|
||||||
|
#print_metadata(img2)
|
||||||
|
|
||||||
|
#dbx = dropbox.Dropbox('SDt1aqMQg7EAAAAAAAAAARV4CNnOSTjYLc05W2YAxIArG93DnaK9Si9VbwE-aBbQ')
|
||||||
|
#dbx.files_upload(decoded_file,'/Apps/AIC Federated Storage Infrastructure/test_image_1.jpg')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
baseurl = "http://127.0.0.1:8000/image/post"
|
||||||
|
session = requests.Session()
|
||||||
|
|
||||||
|
body = {
|
||||||
|
'filename': 'image.jpg',
|
||||||
|
'metadata': 'nix',
|
||||||
|
'image_data': payload
|
||||||
|
}
|
||||||
|
|
||||||
|
response = session.post(baseurl, json=body)
|
||||||
|
print_response(response)
|
||||||
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 196 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 208 KiB |
@ -219,4 +219,4 @@ LOGGING = {
|
|||||||
# increase the maximum upload size of files
|
# increase the maximum upload size of files
|
||||||
DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600
|
DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600
|
||||||
|
|
||||||
DROPBOX_OAUTH2_ACCESS_TOKEN = 'sl.AmBKKaIkaH0ZKuk5i60EbN8dIspDugFK2k4ixfMkr3BZ7ZJ0yF5YAj-69mWKO-G_K-ctk_Ai4a6BeOXEZ_kZH4waUUlPhnV3QBe4QfGYN5PQcs-9SwQ5BWQfeQSKw9jkybbV9mjOdQ4'
|
DROPBOX_OAUTH2_ACCESS_TOKEN = 'SDt1aqMQg7EAAAAAAAAAARV4CNnOSTjYLc05W2YAxIArG93DnaK9Si9VbwE-aBbQ'
|
||||||
@ -37,7 +37,11 @@ class ImageEndpoint:
|
|||||||
@api_view(['POST'])
|
@api_view(['POST'])
|
||||||
def image_api_post(request: HttpRequest):
|
def image_api_post(request: HttpRequest):
|
||||||
logger.debug('Image POST call: {}'.format(request))
|
logger.debug('Image POST call: {}'.format(request))
|
||||||
data = json.loads(request.body.decode('utf-8'))
|
payload = json.loads(request.body.decode('utf-8'))
|
||||||
|
b64encoded_image = payload['image_data']
|
||||||
|
filename = payload['filename']
|
||||||
|
metadata = payload['metadata']
|
||||||
|
decoded_image = base64.b64decode(b64encoded_image)
|
||||||
dbx = dropbox.Dropbox(settings.DROPBOX_OAUTH2_ACCESS_TOKEN)
|
dbx = dropbox.Dropbox(settings.DROPBOX_OAUTH2_ACCESS_TOKEN)
|
||||||
dbx.files_upload(base64.b64decode(data['image_data']),'/Apps/AIC Federated Storage Infrastructure/test_image_1.jpg')
|
dbx.files_upload(decoded_image,'/Apps/AIC Federated Storage Infrastructure/' + filename)
|
||||||
return JsonResponse({'Result': 'success2', 'received file': data['filename']}, safe=False)
|
return JsonResponse({'Result': 'success2', 'received file': filename, 'metadata': metadata}, safe=False)
|
||||||
|
|||||||
@ -19,7 +19,6 @@ setup(
|
|||||||
'whitenoise==5.2.0',
|
'whitenoise==5.2.0',
|
||||||
'Pillow==8.0.1',
|
'Pillow==8.0.1',
|
||||||
'dropbox==10.10.0'
|
'dropbox==10.10.0'
|
||||||
|
|
||||||
],
|
],
|
||||||
license='BSD License', # example license
|
license='BSD License', # example license
|
||||||
description='DESCRIPTION'
|
description='DESCRIPTION'
|
||||||
|
|||||||