everda

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、背景

  收到一个小需求,某项目会上传了很多图片,产品想看看用户上传的图片都是啥。

  线上业务表里存了图片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图片查看器背景颜色

posted on 2019-08-20 18:59  everda  阅读(3339)  评论(0编辑  收藏  举报