Rumah > Artikel > pembangunan bahagian belakang > Cara Mengautomasikan Muat Turun Imej dengan Python: Panduan Komprehensif
Dalam era digital hari ini, mengurus dan memproses imej secara pemrograman boleh menjimatkan banyak masa dan usaha anda. Jika anda ingin mengautomasikan proses memuat turun imej daripada web, anda telah datang ke tempat yang betul. Dalam artikel ini, kita akan menyelami skrip Python yang melakukan perkara itu menggunakan API Pexels — sumber popular foto stok berkualiti tinggi.
Ikhtisar
Skrip Python yang disediakan di sini membolehkan anda mencari imej pada Pexels berdasarkan pertanyaan, memuat turunnya jika ia memenuhi kriteria tertentu dan menyimpannya ke sistem setempat anda. Skrip menggunakan beberapa perpustakaan dan API yang berkuasa, termasuk permintaan, Bantal dan API Pexels.
Ciri Utama Skrip
Penyepaduan API: Ambil imej daripada Pexels menggunakan API mereka.
Penapisan Dinamik: Pilih imej berdasarkan dimensi dan orientasinya.
Simulasi Tarikh: Walaupun API Pexels tidak menyokong penapisan berasaskan tarikh secara langsung, skrip mensimulasikan ini dengan menjana tarikh rawak.
Pengehadan Kadar: Elakkan daripada mencapai had kadar API dengan kelewatan rawak.
Memahami Kod
Import dan Konfigurasi
import os import requests from PIL import Image from io import BytesIO import random import time from datetime import datetime, timedelta
Skrip bermula dengan mengimport perpustakaan penting. Berikut ialah ringkasan ringkas:
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'
Sediakan kunci API anda, URL asas untuk Pexels dan tentukan parameter lain seperti pertanyaan carian, dimensi imej minimum, bilangan imej untuk dimuat turun dan orientasi imej.
Memastikan Direktori Output Wujud
if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR)
Skrip menyemak sama ada direktori output wujud dan menciptanya jika perlu.
Mengambil Imej
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()
Fungsi ini menghantar permintaan kepada API Pexels untuk mengambil imej berdasarkan pertanyaan carian dan parameter lain.
Memuat Turun dan Menyimpan Imej
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
Fungsi ini mengendalikan muat turun imej daripada URL, menyemak dimensi dan orientasinya serta menyimpannya jika ia memenuhi kriteria.
Menjana Tarikh Rawak
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
Fungsi ini menjana tarikh rawak dalam tempoh empat tahun yang lalu. Walaupun API Pexels tidak menyediakan penapisan berasaskan tarikh secara langsung, tarikh rawak ini mensimulasikan penapis sedemikian.
Fungsi Utama
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
Fungsi utama() menyelaraskan proses pengambilan, muat turun dan penyimpanan imej. Ia mengurus penomboran, menyemak imej pendua dan menguatkuasakan kelewatan untuk menghormati had kadar API.
Menjalankan Skrip
Untuk menjalankan skrip ini, pastikan anda telah menggantikan API_KEY dengan kunci API Pexels sebenar anda dan melaraskan parameter lain mengikut keperluan. Simpan skrip dalam fail .py dan laksanakannya menggunakan penterjemah Python. Imej yang memenuhi kriteria yang ditetapkan akan disimpan dalam direktori output.
Kesimpulan
Mengautomasikan muat turun imej boleh memperkemas aliran kerja anda dan memastikan anda mempunyai imej berkualiti tinggi yang boleh anda gunakan. Skrip Python ini menyediakan asas yang kukuh untuk tugasan sedemikian, dengan fleksibiliti untuk penyesuaian berdasarkan keperluan anda. Sama ada anda sedang mengusahakan projek peribadi atau menyepadukan muat turun imej ke dalam aplikasi yang lebih besar, skrip ini menunjukkan kuasa dan serba boleh Python dalam mengendalikan tugas berasaskan web.
Atas ialah kandungan terperinci Cara Mengautomasikan Muat Turun Imej dengan Python: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!