Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';答复';对象没有属性';类型';_Python_Image_Flask_Web Scraping_Python Requests - Fatal编程技术网

Python 属性错误:';答复';对象没有属性';类型';

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

谁能帮我解决这个错误。我正在尝试从查询字符串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.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)