如何使用 Python 自动下载图像:综合指南

2024-08-26 0 969

如何使用 Python 自动下载图像:综合指南

在当今的数字时代,以编程方式管理和处理图像可以为您节省大量的时间和精力。如果您希望自动化从网络下载图像的过程,那么您来对地方了。在本文中,我们将深入研究一个使用 pexels API(高质量库存照片的流行来源)来完成此操作的 Python 脚本。

概述
此处提供的 python 脚本允许您根据查询在 pexels 上搜索图像,如果满足特定条件则下载它们,并将它们保存到本地系统。该脚本使用了多个强大的库和 api,包括 requests、pillow 和 pexels api。

脚本的主要特点
api 集成:使用 api 从 pexels 获取图像。
动态过滤:根据尺寸和方向选择图像。
日期模拟:虽然 pexels api 不直接支持基于日期的过滤,但脚本通过生成随机日期来模拟这一点。
速率限制:避免因随机延迟而达到 api 速率限制。

理解代码

导入和配置

1

2

3

4

5

6

7

import os

import requests

from pil import image

from io import bytesio

import random

import time

from datetime import datetime, timedelta

脚本首先导入必要的库。这是一个快速概述:

  • os 和 requests 分别用于与文件系统交互和发出 HTTP 请求。
  • pil(pillow)用于处理图像操作。
  • random、time 和 datetime 用于生成随机数、管理延迟和处理日期。

1

2

3

4

5

6

7

8

api_key = '...'  # replace with your actual pexels api key

base_url = 'HTTPS://api.pexels.com/v1/search'

output_dir = 'output'

search_query = 'subaru forester'

min_width = 1080

min_height = 1920

num_images = 16

orientation = 'vertical'

设置您的 api 密钥、pexels 的基本 url,并指定其他参数,例如搜索查询、最小图像尺寸、要下载的图像数量和图像方向。

立即学习Python免费学习笔记(深入)”;

点击下载“修复网络工具,一键解决电脑无法上网”;

确保输出目录存在

1

2

if not os.path.exists(output_dir):

    os.makedirs(output_dir)

脚本检查输出目录是否存在,并在必要时创建它。

获取图像

1

2

3

4

5

6

7

8

9

def get_images(query, page=1, per_page=15):

    params = {

        'query': query,

        'page': page,

        'per_page': per_page

    }

    response = requests.get(base_url, HEADers=headers, params=params)

    response.raise_for_status()

    return response.JSon()

此函数向 pexels api 发送请求,以根据搜索查询和其他参数获取图像。

下载和保存图像

1

2

3

4

5

6

7

8

9

10

11

12

13

14

def download_and_save_image(url, filename):

    response = requests.get(url)

    response.raise_for_status()

    img = image.open(bytesio(response.content))

    if img.width >= min_width and img.height >= min_height:

        if orientation == 'vertical' and (img.height / img.width > 1.4):

            img.save(filename)

            print(f'saved {filename}')

            return 1

        elif orientation == 'horizontal' and (img.width / img.height > 1.4):

            img.save(filename)

            print(f'saved {filename}')

            return 1

    return 0

此函数处理从 url 下载图像,检查其尺寸和方向,如果符合条件则保存它。

生成随机日期

1

2

3

4

5

def generate_random_date():

    end_date = datetime.now()

    start_date = end_date - timedelta(days=4*365)

    random_date = start_date + timedelta(days=random.randint(0, 4*365))

    return random_date

该函数生成过去四年内的随机日期。虽然 pexels api 不直接提供基于日期的过滤,但这个随机日期模拟了这样的过滤器。

主要功能

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

def main():

    images_downloaded = 0

    page = 1

    seen_images = set()

    target_date = generate_random_date()

    print(f"Target date for filtering: {target_date.strftime('%Y-%m-%d')}")

while images_downloaded = NUM_IMAGES:

                break

            image_url = photo['src']['original']

            photo_date = datetime.strptime(photo['created_at'], '%Y-%m-%dT%H:%M:%S%z') if 'created_at' in photo else datetime.now()

            if photo_date > target_date and image_url not in seen_images:

                filename = os.path.join(OUTPUT_DIR, f'image_{images_downloaded + 1}.jpg')

                if download_and_save_image(image_url, filename):

                    images_downloaded += 1

                    seen_images.add(image_url)

        page += 1

        time.sleep(random.unifORM(1, 2))  # Sleep to avoid hitting API rate limits

main() 函数协调图像获取、下载和保存过程。它管理分页、检查重复图像并强制延迟以遵守 api 的速率限制。

运行脚本
要运行此脚本,请确保您已将 api_key 替换为实际的 pexels api 密钥,并根据需要调整其他参数。将脚本保存在 .py 文件中并使用 python 解释器执行它。符合指定条件的图像将保存在输出目录中。

结论
自动图像下载可以简化您的工作流程并确保您拥有高质量的图像。该 python 脚本为此类任务提供了坚实的基础,并且可以根据您的需求灵活地进行自定义。无论您是在处理个人项目还是将图像下载集成到更大的应用程序中,此脚本都展示了 python 在处理基于 Web 的任务方面的强大功能和多功能性。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明
1. 本站所有资源来源于用户上传和网络等,如有侵权请邮件联系本站整改team@lcwl.fun!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系本站工作人员处理!
6. 本站资源售价或VIP只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 因人力时间成本问题,部分源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
9.本站所有源码资源都是经过本站工作人员人工亲测可搭建的,保证每个源码都可以正常搭建,但不保证源码内功能都完全可用,源码属于可复制的产品,无任何理由退款!

网站搭建学习网 Python 如何使用 Python 自动下载图像:综合指南 https://www.xuezuoweb.com/14980.html

常见问题
  • 本站所有的源码都是经过平台人工部署搭建测试过可用的
查看详情
  • 购买源码资源时购买了带主机的套餐是指可以享受源码和所选套餐型号的主机两个产品,在本站套餐里开通主机可享优惠,最高免费使用主机
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

Fa快捷助手
手机编程软件开发

在手机上用手点一点就能轻松做软件

去做软件
链未云主机
免备案香港云主机

开通主机就送域名的免备案香港云主机

去使用
链未云服务器
免备案香港云服务器

支持售后、超低价、稳定的免备案香港云服务器

去使用