【python腳本】提供圖片url,批量下載命名圖片


一、背景

  收到一個小需求,某項目會上傳了很多圖片,產品想看看用戶上傳的圖片都是啥。

  線上業務表里存了圖片url和一些用戶ID信息,需要將圖片都下載下來並以日期_用戶ID等信息命名。起初想的是先輸hive服務器地址和賬密,執行查詢url等信息SQL存在列表里,再遍歷列表挨個下載圖片。然而我也不知道hive服務器啥的,搜hive查詢包也得花點時間。所以直接先查出來保存到csv文件里,再直接下載即可。

二、代碼

# -*- coding: utf-8 -*-
import pandas as pd #讀取文件
import os #需要拼接路徑
import requests #下載圖片

'''解決的問題:
讀取"date","uid","qid","url"四個字段的csv文件(注意,date事先改成文本格式的2019-08-19),
拼接url前綴(提供的url不完整,統一拼接前綴),
以date_uid_qid命名圖片,保存在F:\\img文件路徑里。
'''

#定義下載圖片函數
def download_img(img_url, api_token,img_name):
    print (img_url)
    header = {"Authorization": "Bearer " + api_token} # 設置http header,視情況加需要的條目,這里的token是用來鑒權的一種方式
    r = requests.get(img_url, headers=header, stream=True)
    print(r.status_code) # 返回狀態碼
    if r.status_code == 200:
        imgname = img_name + '.png'
        filename = os.path.join('F:\\img', imgname)
        open(filename, 'wb').write(r.content) # 將內容寫入圖片
        print(filename)
        print("done")
    del r

#讀取文件,調用下載圖片函數
if __name__ == '__main__':
    #讀取文件
    image_url=pd.read_csv("E://image_url.csv",skiprows=1,names=["date","uid","qid","url"])
    #文件行數太多,可限制行數先測試看看
    image_url_a=image_url.iloc[:, :]
    api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
    #遍歷image_url_a
    for index,row in image_url_a.iterrows():
        #拼接url前綴
        img_url="https://image.gogle.com/"+row['url']
        img_name=str(row['date'])+"_"+str(row['uid'])+"_"+str(row['qid'])
        #print(img_name)
        download_img(img_url, api_token,img_name)
View Code

 三、其他

然后發現圖片都是無背景,字體是白色的,所以縮略圖看起來都是一片白,windows圖片查看器看也不大好看。

所以,

粗略瀏覽需要改窗口背景:

沒找着

圖片查看需要改圖片查看背景顏色:

如何更改Windows圖片查看器背景顏色


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM