zoukankan      html  css  js  c++  java
  • python-URL转jpg图片

    问题描述

    有图片地址,可以在网页打开 URL:https://bdfile.bluemoon.com.cn/group2/M00/0A/BA/wKg_HlwzY1SAIdXDAAFyo-ZOLKQ399.jpg

    现需要将图片url转为图片,保存在本地

    解决思路

    在内存中将图片url打开,编码为base64,在对这个编码进行解码为图片进行保存即可

    import os,base64
    import requests as req
    from PIL import Image
    from io import BytesIO
    
    response = req.get("https://bdfile.bluemoon.com.cn/group2/M00/0A/BA/wKg_HlwzY1SAIdXDAAFyo-ZOLKQ399.jpg")
    
    # 内存中打开图片
    image = Image.open(BytesIO(response.content))
    
    # 图片的base64编码
    ls_f = base64.b64encode(BytesIO(response.content).read())
    
    # base64编码解码
    imgdata = base64.b64decode(ls_f)
    
    # 图片文件保存
    file = open('test.jpg','wb')
    file.write(imgdata)
    file.close()

    结果

    补充:

    原文:https://www.jianshu.com/p/d64354a61359

    1.用OpenCV

    OpenCV的imread()只能加载本地的图片,并不能通过网址加载图片。但是,opencv的VideoCapture类可以从url加载视频。如果只用opencv的话,我们可以一个迂回的方式:先用VideoCapure加载网址下的图片,然后再传给Mat。

    import cv2
    cap = cv2.VideoCapture(img_src)
    if( cap.isOpened() ) :
        ret,img = cap.read()
        cv2.imshow("image",img)
        cv2.waitKey()

    2. OpenCV+Numpy+urllib

    import numpy as np
    import urllib
    import cv2
    resp = urllib.urlopen(img_src)
    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    cv2.imshow("Image", image)
    cv2.waitKey(0)

    3. skimage

    相对来说,这种方式应该是最简单的,因为skimage可以直接以imread()函数来读取网页图片,而不需要其他的辅助,也不需要迂回。

    from skimage import io
    image = io.imread(img_src)
    io.imshow(image)
    io.show()
  • 相关阅读:
    highcharts 时间少8小时问题
    Spring声明式事务配置管理方法
    jetty简介
    java事务管理
    oracle表中某个字段含有字符回车、空格的手动修改方式
    java环境变量配置
    JAVA解析XML的四种方式
    JSON-lib框架,JAVA对象与JSON、XML之间的相互转换
    Java WebService简单实例
    HTTP协议报文、工作原理及Java中的HTTP通信技术详解
  • 原文地址:https://www.cnblogs.com/zheng1076/p/10251171.html
Copyright © 2011-2022 走看看