app.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # import the necessary packages
  2. import os
  3. import sys
  4. import requests
  5. import ssl
  6. from flask import Flask
  7. from flask import request
  8. from flask import jsonify
  9. from flask import send_file
  10. from uuid import uuid4
  11. from os import path
  12. import torch
  13. import fastai
  14. from fasterai.visualize import *
  15. from pathlib import Path
  16. torch.backends.cudnn.benchmark=True
  17. colorizer = get_image_colorizer(artistic=True)
  18. os.environ['CUDA_VISIBLE_DEVICES']='0'
  19. app = Flask(__name__)
  20. # define a predict function as an endpoint
  21. @app.route("/process", methods=["POST"])
  22. def process():
  23. source_url = request.json["source_url"]
  24. render_factor = int(request.json["render_factor"])
  25. upload_directory = 'upload'
  26. if not os.path.exists(upload_directory):
  27. os.mkdir(upload_directory)
  28. random_filename = str(uuid4()) + '.png'
  29. colorizer.plot_transformed_image_from_url(url=source_url, path=os.path.join(upload_directory, random_filename), figsize=(20,20),
  30. render_factor=render_factor, display_render_factor=True, compare=False)
  31. callback = send_file(os.path.join("result_images", random_filename), mimetype='image/jpeg')
  32. os.remove(os.path.join("result_images", random_filename))
  33. os.remove(os.path.join("upload", random_filename))
  34. return callback
  35. if __name__ == '__main__':
  36. port = 5000
  37. host = '0.0.0.0'
  38. app.run(host=host, port=port, threaded=True)