cyj2020014009 2023-02-15 11:16 采纳率: 100%
浏览 25
已结题

用requests获取到的图片的问题

我想请问一下,用requests.get(url).content获取到的图片保存到本地会跟直接在地址上下载有什么区别嘛?
我想把下载的图片整合到一个pdf里,我用过了网上的很多方法,img2pdf,PIF的方法,我发现就我用requests下载下来的图片不能够识别,要么报错(报错说我要进行的图片是无效的,但是我是能够打开的),要么pdf里显示是空白,而我用其他地址直接下载下来的图片就能够整和成pdf,这是什么原因啊?

  • 写回答

4条回答 默认 最新

  • GISer Liu 2023-02-15 11:44
    关注

    以下答案引用自GPT-3大模型,请合理使用:

    ,谢谢!
    
    我想可能是因为需要先进行图片格式的转换才能够正确地被识别。如果是网站上直接下载的图片,通常只要用open()和Image.open()就可以实现,但是用requests.get()获取文件的时候,因为从网站获取到的是二进制数据,前面一般会附带有MIME type头, 是一种用来识别文件类型的格式,这样你可以根据这个MIME type头有效地将二进制数据转换成真正的图片格式,然后再进行处理,方法可以这样:
    
    # 先获取二进制数据和MIME type头
    response = requests.get(url)
    content_type = response.headers['Content-Type'] 
    binary_data = response.content
    
    # 根据MIME type头的类型来进行图片格式转换
    from PIL import Image
    from io import BytesIO
    if 'image/png' in content_type:
     img = Image.open(BytesIO(binary_data)).convert('RGB')
    elif 'image/jpeg' in content_type:
     img = Image.open(BytesIO(binary_data)).convert('RGB')
    elif 'image/jpg' in content_type:
     img = Image.open(BytesIO(binary_data)).convert('RGB')
    
    # 保存图片到本地
    img.save('path_to_local.jpg')
    

    如果我的回答解决了您的问题,请采纳我的回答

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图