一、背景
收到一个小需求,某项目会上传了很多图片,产品想看看用户上传的图片都是啥。
线上业务表里存了图片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)
三、其他
然后发现图片都是无背景,字体是白色的,所以缩略图看起来都是一片白,windows图片查看器看也不大好看。
所以,
粗略浏览需要改窗口背景:
没找着
图片查看需要改图片查看背景颜色: