Skip to content
Snippets Groups Projects
Commit 9afa0c18 authored by Herman Andersen Dyrkorn's avatar Herman Andersen Dyrkorn
Browse files

downscaling images an converting to base64 string

parent c6f352a7
No related branches found
No related tags found
1 merge request!44Resolve "downscale images when returning from server"
......@@ -4,6 +4,7 @@ from flask_restful import Resource
from api import db, limiter
from api.models.dbmodels import Location, User, Salamander
import os
import cv2
import glob
from image_encoder.image_encoder import *
from path_constants import _ACCESS_DATABASE
......@@ -28,7 +29,20 @@ class SalamanderEndpoint(Resource):
list_of_paths = glob.glob(os.path.join(path_to_salamander_images, '*.*'))
for path in list_of_paths:
if not path.__contains__("_str"):
encoded = encode(path)[2:-1]
image = cv2.imread(path)
# percent of original size
scale_percent = 40
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
encoded = base64.b64encode(cv2.imencode(".jpg", resized)[1]).decode()
image_id = os.path.basename(path)[0]
image_data = {"id": image_id, "url": "data:image/png;base64," + encoded}
salamander_images.append(image_data)
......
import sys
from flask import jsonify
from flask_jwt_extended import jwt_required, get_jwt_identity
from flask_restful import Resource
......@@ -7,6 +9,8 @@ import os
import glob
from image_encoder.image_encoder import *
from path_constants import _ACCESS_DATABASE
import cv2
# get one specific image on a specific salamander based on s_id and i_id
class SalamanderImageEndpoint(Resource):
......@@ -20,20 +24,38 @@ class SalamanderImageEndpoint(Resource):
if user.admin:
with _ACCESS_DATABASE:
salamander = db.session.query(Salamander).filter_by(id=salamander_id).first()
salamander_growth = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id, image_id=image_id).first()
salamander_growth = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id,
image_id=image_id).first()
if salamander and salamander_growth:
location = db.session.query(Location).filter_by(id=salamander.location_id).first()
salamander_images = []
path_to_salamander_images = os.path.join("./images", location.name, salamander.species, salamander.sex, str(salamander.id))
path_to_salamander_images = os.path.join("./images", location.name, salamander.species,
salamander.sex, str(salamander.id))
list_of_paths = glob.glob(os.path.join(path_to_salamander_images, '*.*'))
for path in list_of_paths:
basename = os.path.basename(path)
if basename.__contains__(str(image_id)):
encoded = encode(path)[2:-1]
image = cv2.imread(path)
# percent of original size
scale_percent = 20
width = int(image.shape[1] * scale_percent / 100)
height = int(image.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
encoded = base64.b64encode(cv2.imencode(".jpg", resized)[1]).decode()
image_data = {"url": "data:image/png;base64," + encoded}
salamander_images.append(image_data)
return jsonify({"images": salamander_images, "length": salamander_growth.length, "weight": salamander_growth.weight, "imageId": image_id, "location": location.name, "salamanderId": salamander.id, "sex": salamander.sex, "species": salamander.species, 'status': 200})
return jsonify({"images": salamander_images, "length": salamander_growth.length,
"weight": salamander_growth.weight, "imageId": image_id, "location": location.name,
"salamanderId": salamander.id, "sex": salamander.sex, "species": salamander.species,
'status': 200})
else:
return jsonify({"message": "no salamander with this id or no growth data", 'status': 400})
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment