Чтобы сохранить в файл, вам не нужны Image
и BytesIO()
- вы можете напрямую использовать open()
и write()
. Если вы хотите сохранить каждое изображение под другим именем, вам следует создать abc
внутри get()
from flask import Flask, request
from flask_restful import Resource, Api
import requests
import uuid
app = Flask(__name__)
api = Api(app)
#abc = uuid.uuid4().hex[:6].upper() # one name for all images
class Predict(Resource):
def get(self):
abc = uuid.uuid4().hex[:6].upper() # generate new name for new image
filename = abc + '.png'
#print(filename)
url = request.args['url']
r = requests.get(url)
f = open(filename, 'wb') # write in bytes-mode 'wb'
f.write(r.content)
f.close()
return {'status': 'OK', 'name': filename}
api.add_resource(Predict, '/')
if __name__ == "__main__":
app.run("", port=7999, debug=True)
Вам понадобятся Image
и BytesIO
, только если вы хотите отредактировать изображение перед сохранением.
from flask import Flask, request
from flask_restful import Resource, Api
import requests
import uuid
from PIL import Image
import io
app = Flask(__name__)
api = Api(app)
#abc = uuid.uuid4().hex[:6].upper() # one name for all images
class Predict(Resource):
def get(self):
abc = uuid.uuid4().hex[:6].upper() # generate new name for new image
filename = abc + '.png'
#print(filename)
url = request.args['url']
r = requests.get(url)
fp = io.BytesIO(r.content)
img = Image.open(fp)
img = img.resize( (800, 600) ) # resize image
img.save(filename)
return {'status': 'OK', 'name': filename}
api.add_resource(Predict, '/')
if __name__ == "__main__":
app.run("", port=7999, debug=True)