Python 属性错误:';答复';对象没有属性';类型';
谁能帮我解决这个错误。我正在尝试从查询字符串imagle url保存图像。但是遇到了以下错误。 下面是我的代码,请忽略不必要的库Python 属性错误:';答复';对象没有属性';类型';,python,image,flask,web-scraping,python-requests,Python,Image,Flask,Web Scraping,Python Requests,谁能帮我解决这个错误。我正在尝试从查询字符串imagle url保存图像。但是遇到了以下错误。 下面是我的代码,请忽略不必要的库 from flask_restful import Resource, Api import requests import uuid from PIL import Image import urllib.request as urllib import io app = Flask(__name__) api = Api(app) abc = uuid.uui
from flask_restful import Resource, Api
import requests
import uuid
from PIL import Image
import urllib.request as urllib
import io
app = Flask(__name__)
api = Api(app)
abc = uuid.uuid4().hex[:6].upper()
class Predict(Resource):
def get(self):
url = request.args['url']
r = requests.get(url)
fd = urllib.urlopen(r)
image_file = io.BytesIO(fd.read())
im = Image.open(image_file)
return im.save(abc+".png")
api.add_resource(Predict, '/')
if __name__ == "__main__":
app.run("", port=7999, debug=True)
输出错误:
r=requests.get(url)
返回一个响应对象,您可以通过调用r.content来读取它的内容,无需尝试用urlopen打开响应对象然后读取它保存到文件中,您不需要Image
和BytesIO()
-您可以直接使用open()
和write()
如果要用不同的名称保存每个图像,则应在get()内创建abc
仅当您希望在保存前编辑图像时,才需要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)
请尝试fd=urllib.urlopen(url)
,您使用的是哪种python版本,如果是python 3,则使用import-urllib2
fd=urllib2.urlopen(url)
im.save()
返回None
,因此您的返回im.save(abc+“.png”)
意味着返回None
。您应该返回一些响应
。如果您从url读取图像,则不需要图像
来保存它,而是直接打开(…,'wb')`和write()
,谢谢您,这非常有帮助。但是,如果我想在另一个函数中使用相同的图像,请将其保存在文件(或数据库)中,然后从文件(或数据库)中读取。
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)