Commit 9afa0c18 authored by Herman Andersen Dyrkorn's avatar Herman Andersen Dyrkorn
Browse files

downscaling images an converting to base64 string

parent c6f352a7
......@@ -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:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment