Lưu trữ hình ảnh Python

Làm việc với hình ảnh trong Python cung cấp cho bạn nhiều khả năng phát triển, từ tải xuống hình ảnh bằng URL đến truy xuất thuộc tính ảnh. Nhưng, chính xác thì làm cách nào để bạn có thể truy cập những bức ảnh này ngay từ đầu?

Trong bài viết này, bạn sẽ tìm hiểu một số phương pháp khác nhau được sử dụng để tải xuống hình ảnh trong Python

điều kiện tiên quyết

Để hưởng lợi đầy đủ từ bài đăng này, bạn nên có những điều sau đây

✅ Một số kinh nghiệm với Python 2 hoặc Python 3 🐍

✅ Python 3 được cài đặt trên máy cục bộ của bạn. Có một tập lệnh tương thích với Python 2 trong phần

Sử dụng Python để tải xuống và lưu hình ảnh từ URL

 

Sử dụng Gói yêu cầu

Là ứng dụng khách HTTP phổ biến nhất trong Python, gói Yêu cầu thanh lịch và dễ sử dụng cho người mới bắt đầu. Nhiều nhà phát triển coi đây là một phương pháp thuận tiện để tải xuống bất kỳ loại tệp nào trong Python

Giả sử bạn đã cài đặt Python 3 vào môi trường cục bộ của mình, hãy tạo một thư mục

file_name = input['Save image as [string]:'] #prompt user for file name
2 và thêm vào một
file_name = input['Save image as [string]:'] #prompt user for file name
3. Khi tệp đó được mở, hãy cài đặt và nhập các gói sau

import requests # request img from web
import shutil # save img locally

Sau khi bạn đã nhập các tệp đó, hãy tạo biến

file_name = input['Save image as [string]:'] #prompt user for file name
4 được đặt thành câu lệnh
file_name = input['Save image as [string]:'] #prompt user for file name
5 yêu cầu URL hình ảnh

url = input['Please enter an image URL [string]:'] #prompt user for img url

Ngoài ra, hãy tạo một biến khác cũng được đặt thành một câu lệnh đầu vào,

file_name = input['Save image as [string]:'] #prompt user for file name
6

file_name = input['Save image as [string]:'] #prompt user for file name

Trong dòng mã tiếp theo, triển khai phương thức

file_name = input['Save image as [string]:'] #prompt user for file name
7 từ mô-đun yêu cầu để truy xuất hình ảnh. Phương thức sẽ nhận hai tham số, biến
file_name = input['Save image as [string]:'] #prompt user for file name
4 mà bạn đã tạo trước đó và biến
file_name = input['Save image as [string]:'] #prompt user for file name
9 bằng cách thêm đối số thứ hai này để đảm bảo không có sự gián đoạn nào xảy ra khi phương thức đang chạy

res = requests.get[url, stream = True]

Phương pháp

res = requests.get[url, stream = True]
0 để ghi hình ảnh của bạn dưới dạng tên tệp, xây dựng tệp cục bộ ở chế độ ghi nhị phân và lưu cục bộ bằng
res = requests.get[url, stream = True]
1. Mặc dù không cần thiết nhưng bạn nên kiểm tra xem hình ảnh đã được truy xuất thành công hay chưa bằng cách sử dụng Mã trạng thái của yêu cầu trong một câu lệnh có điều kiện

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']

Kịch bản hoàn thành của bạn sẽ trông giống như thế này

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']

Thực thi tập lệnh của bạn bằng cách chạy lệnh sau trong thiết bị đầu cuối của bạn

python requests_python_img_dl.py

Hình ảnh đã tải xuống của bạn sẽ lưu vào thư mục

res = requests.get[url, stream = True]
2 mới được tạo. Xin chúc mừng, giờ đây bạn có thể yêu cầu tải xuống tất cả hình ảnh mà trái tim bạn mong muốn 💖

Tải xuống hình ảnh bằng urllib

Một phương pháp ưa thích khác để tải xuống dữ liệu trong Python là thông qua

res = requests.get[url, stream = True]
3, một gói thu thập một số mô-đun để làm việc với các URL, bao gồm

  • urllib. yêu cầu mở và đọc

  • urllib. phân tích cú pháp để phân tích cú pháp URL

  • urllib. lỗi đối với bất kỳ trường hợp ngoại lệ nào được đưa ra bởi urllib. lời yêu cầu

  • urllib. robotparser để phân tích cú pháp robot. tập tin txt

Để tìm hiểu thêm về mô-đun

res = requests.get[url, stream = True]
3, hãy tham khảo lại tài liệu, nhưng bây giờ bạn đã biết những điều cơ bản, đã đến lúc bắt đầu

Nếu

res = requests.get[url, stream = True]
3 không có trong môi trường hiện tại của bạn, hãy cài đặt nó bằng cách thực thi mã bên dưới

pip install urllib

Lưu ý rằng nếu bạn đang sử dụng Python 2, thật không may, mã này sẽ không hoạt động với môi trường của bạn, nhưng phần cuối của phần này bao gồm một tập lệnh tương thích với Python 2

Khi bạn đã cài đặt

res = requests.get[url, stream = True]
3, hãy tạo một thư mục mới cho dự án của bạn,
res = requests.get[url, stream = True]
7. Bước này không cần lặp lại nếu bạn đã tạo ở phần trước. Trong thư mục đó, hãy tạo một thư mục hình ảnh, cũng như tệp
res = requests.get[url, stream = True]
8. Điều hướng đến tệp
res = requests.get[url, stream = True]
8 của bạn và ở trên cùng, hãy chèn dòng mã sau để nhập gói
res = requests.get[url, stream = True]
3

import urllib.request

Với mô-đun của bạn đã được nhập, nhiệm vụ của bạn là tạo một tập lệnh thân thiện với người dùng cho phép bạn tải xuống hình ảnh một cách nhanh chóng và có tổ chức. Đầu tiên, tạo một biến

file_name = input['Save image as [string]:'] #prompt user for file name
4 từ một hàm đầu vào

url = input['Please enter image URL [string]:']

Sau đó, quyết định bạn muốn tệp hình ảnh của mình lưu dưới dạng nào, sử dụng một câu lệnh nhập khác

url = input['Please enter an image URL [string]:'] #prompt user for img url
0

Với hai biến chứa dữ liệu cần thiết để tải xuống và sắp xếp các tệp hình ảnh mới tạo của bạn, hãy viết mã lưu [các] hình ảnh. Bắt đầu bằng cách xác định một hàm có ba tham số, biến

file_name = input['Save image as [string]:'] #prompt user for file name
4 của bạn, biến _____14_______3 được chỉ định mà bạn muốn lưu hình ảnh vào và _________6 được đặt trước đó

url = input['Please enter an image URL [string]:'] #prompt user for img url
1

Bên trong hàm tạo một

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
5 đến nơi hình ảnh sẽ được lưu vào. Đường dẫn đầy đủ của hình ảnh sẽ là ____14_______3 với _____________6 được nối và một chuỗi ___14_______8 được thêm vào cuối. *Tương tự, nếu bạn muốn lưu hình ảnh của mình dưới dạng PNG, bạn sẽ sử dụng
if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
9

url = input['Please enter an image URL [string]:'] #prompt user for img url
2

Để tạo mã thực sự tải xuống hình ảnh, bạn cần tích hợp

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
0 và
import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
1 để tự động tải xuống và lưu hình ảnh dựa trên các đối số đã cho, ✨rất may là bạn vừa tạo ra chúng. ✨

url = input['Please enter an image URL [string]:'] #prompt user for img url
3

Gọi chức năng đó ở cuối tập lệnh của bạn tương tự như thế này

url = input['Please enter an image URL [string]:'] #prompt user for img url
4

Khi bạn gọi

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
2, bạn sẽ cần phải chuyển qua ba đối số một lần nữa, lần này sẽ là
file_name = input['Save image as [string]:'] #prompt user for file name
4 của bạn, đường dẫn tệp là thư mục
import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
4 bạn đã tạo lúc đầu và tên_tệp bạn đã chọn

Tin hay không, đó là nó. Miễn là bạn đang ở trong thư mục

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
5 của mình, hãy chạy tập lệnh của bạn trong thiết bị đầu cuối với mã bên dưới

url = input['Please enter an image URL [string]:'] #prompt user for img url
5

Bạn đã làm rất tốt. Bạn vừa tải xuống hình ảnh đầu tiên của mình bằng Python bằng gói

res = requests.get[url, stream = True]
3 😎

⛔︎ Nếu bạn chưa nâng cấp Python 3, bạn có thể thấy mình gặp một số lỗi liên quan đến

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
0, đoạn mã sau phải tương thích với Python 2

url = input['Please enter an image URL [string]:'] #prompt user for img url
6

*Không giống như Python 3, phiên bản 2 không hỗ trợ gói

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
0. Thay vào đó, bạn có thể nhập

urllib2 và sử dụng

import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
9 để đọc url hình ảnh, sau đó tải xuống môi trường cục bộ của bạn. Tuy nhiên, hình ảnh bây giờ sẽ được lưu trực tiếp vào thư mục
import requests # request img from web
import shutil # save img locally

url = input['Please enter an image URL [string]:'] #prompt user for img url
file_name = input['Save image as [string]:'] #prompt user for file_name

res = requests.get[url, stream = True]

if res.status_code == 200:
    with open[file_name,'wb'] as f:
        shutil.copyfileobj[res.raw, f]
    print['Image sucessfully Downloaded: ',file_name]
else:
    print['Image Couldn\'t be retrieved']
5 thay vì thư mục
python requests_python_img_dl.py
1. *

Sử dụng mô-đun Wget

Ngoài các gói

python requests_python_img_dl.py
2 và
python requests_python_img_dl.py
3, bạn cũng có thể tải xuống hình ảnh bằng Python bằng cách sử dụng mô-đun wget. Nếu bạn đã thực hiện điều hướng bên trong
python requests_python_img_dl.py
4 của mình, nếu chưa tạo nó ngay bây giờ. Trong thư mục, tạo một tệp
python requests_python_img_dl.py
5 và nhập mô-đun
python requests_python_img_dl.py
6 như vậy

url = input['Please enter an image URL [string]:'] #prompt user for img url
7

Khi bạn đã cài đặt và nhập wget, hãy đặt biến

file_name = input['Save image as [string]:'] #prompt user for file name
4 bằng câu lệnh đầu vào gán địa chỉ hình ảnh

url = input['Please enter image URL [string]:']

Sử dụng biến

python requests_python_img_dl.py
8 trong biến
file_name = input['Save image as [string]:'] #prompt user for file name
4 làm đối số và đặt nó bằng biến
file_name = input['Save image as [string]:'] #prompt user for file name
6, bạn sẽ có thể truy cập nó sau đó

url = input['Please enter an image URL [string]:'] #prompt user for img url
9

Kịch bản đầy đủ sẽ giống như thế này

file_name = input['Save image as [string]:'] #prompt user for file name
0

Đó là tất cả. Bạn có thể chạy tập lệnh của mình 🏃

file_name = input['Save image as [string]:'] #prompt user for file name
1

Chúng tôi cũng đã viết một bài viết về cách sử dụng Python với wget , đó là một cách tuyệt vời khác để sử dụng wget với Python

Phần kết luận

Như mọi khi, mỗi phương pháp này đều có ưu và nhược điểm. Nếu bạn gặp sự cố khi cài đặt gói Yêu cầu hoặc muốn ít phụ thuộc hơn trong urllib chương trình của mình thì đây có thể là lựa chọn tốt nhất của bạn. Tuy nhiên, mô-đun Yêu cầu đã trở thành một cách phổ biến và đáng tin cậy để tải xuống bất kỳ thứ gì trong Python, ngay cả tài liệu urllib cũng đề xuất nó là giao diện máy khách HTTP cấp cao

Nếu bạn đang tìm kiếm nhiều cách hơn nữa để tải xuống hình ảnh và các loại tệp từ web bằng Python, tôi khuyên bạn nên xem bài đăng,

Tôi hy vọng bạn tìm thấy bài viết này thú vị. Bạn cũng có thể truy cập mã nguồn tại đây. Chúc mừng cạo. 🐝

Tài nguyên bổ sung

  • gói yêu cầu
  • quên mô-đun

Maxine Meurer

Maxine là một kỹ sư phần mềm và là một nhà văn đam mê kỹ thuật, người thích dành thời gian rảnh của mình để kết hợp kiến ​​thức về công nghệ môi trường của mình vào việc phát triển web.

Chủ Đề