오늘날의 디지털 시대에 프로그래밍 방식으로 이미지를 관리하고 처리하면 상당한 시간과 노력을 절약할 수 있습니다. 웹에서 이미지를 다운로드하는 프로세스를 자동화하려는 경우 올바른 위치에 오셨습니다. 이 기사에서는 인기 있는 고품질 스톡 사진 소스인 Pexels API를 사용하여 이러한 작업을 수행하는 Python 스크립트에 대해 자세히 살펴보겠습니다.
개요
여기에 제공된 Python 스크립트를 사용하면 쿼리를 기반으로 Pexels에서 이미지를 검색하고, 특정 기준을 충족하는 경우 다운로드하고, 로컬 시스템에 저장할 수 있습니다. 이 스크립트는 요청, Pillow 및 Pexels API를 포함한 여러 가지 강력한 라이브러리와 API를 사용합니다.
스크립트 주요 기능
API 통합: API를 사용하여 Pexels에서 이미지를 가져옵니다.
동적 필터링: 크기와 방향을 기준으로 이미지를 선택하세요.
날짜 시뮬레이션: Pexels API는 날짜 기반 필터링을 직접 지원하지 않지만 스크립트는 임의의 날짜를 생성하여 이를 시뮬레이션합니다.
속도 제한: 무작위 지연으로 인해 API 속도 제한에 도달하지 않도록 하세요.
코드 이해
가져오기 및 구성
import os import requests from PIL import Image from io import BytesIO import random import time from datetime import datetime, timedelta
스크립트는 필수 라이브러리를 가져오는 것으로 시작됩니다. 간단한 요약은 다음과 같습니다.
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을 설정하고 검색어, 최소 이미지 크기, 다운로드할 이미지 수, 이미지 방향 등 기타 매개변수를 지정하세요.
출력 디렉터리가 존재하는지 확인
if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR)
스크립트는 출력 디렉터리가 존재하는지 확인하고 필요한 경우 생성합니다.
이미지 가져오는 중
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에 요청을 보내 검색어 및 기타 매개변수를 기반으로 이미지를 가져옵니다.
이미지 다운로드 및 저장
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에서 이미지를 다운로드하고, 크기와 방향을 확인하고, 기준에 부합하면 저장하는 기능입니다.
임의 날짜 생성
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
이 함수는 지난 4년 이내의 임의 날짜를 생성합니다. Pexels API는 날짜 기반 필터링을 직접 제공하지 않지만 이 임의 날짜는 이러한 필터를 시뮬레이션합니다.
주요 기능
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: data = get_images(SEARCH_QUERY, page) photos = data.get('photos', []) if not photos: print('No more photos found.') break random.shuffle(photos) # Shuffle to get a more random selection for photo in photos: if 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의 강력함과 다양성을 보여줍니다.
위 내용은 Python으로 이미지 다운로드를 자동화하는 방법: 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!