网页上图片批量下载并压缩图片大小和尺寸

问题描述

最近碰到一个问题,就是需要取找大约2000张图片用来做机器人的头像。

批量下载图片(爬取图片)

刚开始了解了一下python网络爬虫,发现有点繁琐,需要花费比较大的精力才能解决。从网上看到chrome有很多插件可以批量下载网页上的图片,对比了几款,发现Fatkun简单粗暴。可以批量下载当前打开页面上的所有图片。


image.png

压缩图片大小和尺寸

问了美术朋友,推荐了几款图片处理工具
1、pngquant。试用了命令行工具。可以很方便的批量压缩图片。没找到修改图片尺寸的功能。

pngquant *.jpg

2、https://tinypng.com/。支持批量压缩20张图片,压缩效果也很不错。20张能叫批量么?

3、python的图片处理库pillow。自动动手丰衣足食。
python:我才是最好语言。
PHP:wtf?

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

import os
import sys
# print(sys.path)
# mac下pip安装后默认路径找不到
sys.path.append("/Library/Python/3.7/site-packages")

import uuid
from PIL import Image

image_src_path = "../" # 图片源路径,处理后的图片保存到当前路径下
image_size_x = 250 # 处理后图片宽度

def compress_image(infile,outfile):
    im = Image.open(infile)
    (x,y) = im.size #read image size
    x_s = image_size_x #define standard width
    y_s = int(y * x_s / x) #calc height based on standard width
    if x < x_s:
        x_s,y_s = x,y
    out = im.resize((x_s,y_s),Image.ANTIALIAS) #resize image with high-quality
    out.save(outfile)
    im.close()
    print('file %s->%s size (%d,%d)->(%d,%d) ' %(infile,outfile,x,y,x_s,y_s))

for cur_path, cur_dir, cur_files in os.walk(image_src_path):
    print(cur_path,cur_dir)
    if cur_path != image_src_path:
        continue
    for f in cur_files:
        if f.endswith(".png"):
            compress_image(image_src_path+f,str(uuid.uuid4())+".png")

你可能感兴趣的:(网页上图片批量下载并压缩图片大小和尺寸)