Hướng dẫn how to save multiple images in python - cách lưu nhiều ảnh trong python
Tôi đang làm việc trong một dự án để xử lý hình ảnh, tôi đã tạo mã để cắt xén và thay đổi kích thước nó, tuy nhiên tôi không biết cách lưu nhiều hình ảnh vào thư mục được nhắm mục tiêu. Show
Đây là mã của tôi
HALFER 19.7K17 Huy hiệu vàng92 Huy hiệu bạc179 Huy hiệu đồng17 gold badges92 silver badges179 bronze badges Đã hỏi ngày 31 tháng 5 năm 2020 lúc 7:17May 31, 2020 at 7:17
5 Bạn chỉ cần viết hình ảnh và tạo số lượng vòng lặp của tên của tên:
Bằng cách đó bạn nhận được tên đặt hàng cho nó. Bạn có thể sử dụng ngôn ngữ định dạng mini để định dạng 5 như vậy:
Output:
Xem Chuỗi định dạng Ngôn ngữ mini để biết thêm các tùy chọn định dạng. Đã trả lời ngày 31 tháng 5 năm 2020 lúc 7:31May 31, 2020 at 7:31
Patrick Artnerpatrick ArtnerPatrick Artner 49,4K8 Huy hiệu vàng45 Huy hiệu bạc68 Huy hiệu Đồng8 gold badges45 silver badges68 bronze badges 0
Kết quả học tập
Tự động tải xuống hình ảnh từ một số trang HTML của bạn là một kỹ năng thiết yếu, trong hướng dẫn này, bạn sẽ học 4 phương pháp về cách tải xuống hình ảnh bằng Python! Hãy bắt đầu với ví dụ dễ nhất, nếu chúng ta đã có một danh sách các URL hình ảnh thì chúng ta có thể làm theo quy trình này:
Nhập khẩu Python
Thay đổi thành thư mục của thư mục có tên All_images, điều này có thể được thực hiện bằng một trong hai:
0 1Phương pháp một: Cách tải xuống nhiều hình ảnh từ danh sách PythonĐể tải xuống nhiều hình ảnh, chúng tôi sẽ sử dụng thư viện yêu cầu. Chúng tôi cũng sẽ tạo một danh sách Python để lưu trữ bất kỳ URL hình ảnh bị hỏng nào đã trả lại mã trạng thái 200: 2 3 4 5Xem nó đơn giản như thế nào! ☝ Nếu bạn kiểm tra thư mục của mình, bây giờ bạn đã tải xuống tất cả các hình ảnh có chứa mã trạng thái 200! Phương pháp hai: Cách tải xuống nhiều hình ảnh từ nhiều trang web HTMLNếu chúng tôi không có URL hình ảnh chính xác, chúng tôi sẽ cần phải làm như sau:
Trang web này Internetingishard.com có một số URL hình ảnh tương đối. Do đó, chúng tôi sẽ cần đảm bảo rằng mã của chúng tôi có thể xử lý cho hai loại URL nguồn hình ảnh sau:
6Chúng tôi cũng sẽ trích xuất miền của mỗi URL trong khi chúng tôi lặp qua các trang web như vậy: 7 8 9 0Bây giờ, hãy để kiểm tra kỹ và lọc từ điển của chúng tôi để & nbsp; chúng tôi chỉ nhìn vào các trang web nơi có ít nhất 1 thẻ hình ảnh:we only look at web pages where there was at least 1 image tag: 1 2Một cách dễ dàng hơn để viết mã trên sẽ là thông qua sự hiểu biết từ điển: 3Bây giờ chúng ta có thể làm sạch tất cả các URL hình ảnh bên trong mọi khóa từ điển và thay đổi tất cả các đường dẫn URL tương đối sang các đường dẫn URL chính xác. Hãy bắt đầu bằng cách in ra tất cả các nguồn hình ảnh khác nhau để xem làm thế nào chúng ta có thể cần phải làm sạch dữ liệu dưới đây: 4Đối với phạm vi của hướng dẫn này, tôi đã quyết định:
5 6 7Sau khi làm sạch các URL hình ảnh, giờ đây chúng tôi có thể tham khảo Phương thức một để tải xuống hình ảnh vào máy tính của chúng tôi! Lần này, hãy để Lừa chuyển đổi nó thành một chức năng: 8 9 0
Fantastic! Bây giờ có một số điều mà chúng tôi đã không nhất thiết phải bao gồm: bao gồm:
Nhưng đối với hầu hết các phần, bạn sẽ có thể tải xuống hình ảnh với số lượng lớn! Cách tăng tốc độ tải xuống hình ảnh của bạnKhi làm việc với 100 URL hoặc 1000 URL, điều quan trọng là tránh sử dụng phương pháp đồng bộ để tải xuống hình ảnh. Một cách tiếp cận không đồng bộ có nghĩa là chúng ta có thể tải xuống nhiều trang web hoặc nhiều hình ảnh song song. Điều này có nghĩa là thời gian thực hiện tổng thể sẽ nhanh hơn nhiều! ThreadPoolExecutor()ThreadPoolExecutor là một trong những gói I/O được xây dựng trong các gói I/O để tạo ra một hành vi không đồng bộ thông qua nhiều luồng. Để sử dụng nó, chúng tôi sẽ đảm bảo rằng chức năng sẽ chỉ hoạt động trên một URL. Sau đó, chúng tôi sẽ chuyển danh sách URL hình ảnh vào nhiều công nhân 😉 1 2 3Mã dưới đây sẽ tạo một thư mục mới và sau đó biến nó thành thư mục hoạt động hiện tại: 4 5Bạn nên tải xuống hình ảnh nhưng với tốc độ nhanh hơn nhiều! Lập trình không đồng bộ!Giống như JavaScript, Python 3.6+ đi kèm với sự hỗ trợ bản địa cho các đồng hành được gọi là Asyncio. Tương tự như NodeJS, có một phương thức có sẵn cho bạn để tạo các vòng lặp sự kiện tùy chỉnh cho mã async. Chúng tôi cũng sẽ cần tải xuống thư viện yêu cầu HTTP mã ASYNC được gọi là Aiohttp 6Chúng tôi cũng sẽ tải xuống AIofiles cho phép chúng tôi viết nhiều tệp hình ảnh không đồng bộ: 7 8 9Cách tải xuống 1 tệp Asychronousy 0 1 2 3Chúng tôi sẽ cần cấu trúc mã của chúng tôi hơi khác nhau để phiên bản Async hoạt động trên nhiều tệp:
4 5 6Lưu ý rằng khi chúng ta gọi chức năng này, nó thực sự không chạy và tạo ra một đồng hành! ☝ Sau đó, chúng ta có thể sử dụng Asyncio làm phương thức để thực hiện tất cả các thiết bị gọi tìm nạp cần được hoàn thành: Nếu bạn nhận được loại lỗi này khi chạy lệnh sau: 7
Có khả năng bởi vì bạn đang cố gắng chạy Asyncio trong một vòng lặp sự kiện không thể thực hiện được. (Notebook Jupyter chạy trong một vòng lặp sự kiện!). Theo thiết kế Asyncio không cho phép vòng lặp sự kiện của nó được lồng nhau. Điều này thể hiện một vấn đề thực tế: khi trong một môi trường mà vòng lặp sự kiện đã chạy, nó không thể chạy các nhiệm vụ và chờ kết quả. Cố gắng làm như vậy sẽ đưa ra lỗi Lỗi RunTimeError: Vòng lặp sự kiện này đã chạy. Do đó, bạn sẽ cần sử dụng thư viện Nest-Asyncio khi sử dụng máy tính xách tay Jupyter. 8Cách tải xuống nhiều tệp Python bên trong tệp Python (.py)Hãy để lưu bộ biến chứa URL của chúng tôi vào tệp .txt: 9Tạo một tệp PythonSau đó, bạn sẽ cần tạo một tệp Python và thêm mã sau vào nó: 0Sau đó chạy tập lệnh Python trong & nbsp; dòng thiết bị đầu cuối / lệnh của bạn với:either your terminal / command line with: 1Hãy cùng phá vỡ những gì mà xảy ra trong đoạn mã trên:
Cuối cùng, hãy để rõ ràng và xóa tất cả các thư mục để làm sạch môi trường của chúng tôi: 2 3 4Có thể tải xuống hình ảnh với Python cho phép bạn mở rộng khả năng tự động hóa của mình và những chương trình khác, API, v.v. Bạn có thể sử dụng dữ liệu hình ảnh đó! Hy vọng bây giờ bạn cảm thấy tự tin về việc tải xuống hình ảnh trong Python ❤ Phản ứng của bạn là gì?Trang web này chứa các liên kết đến một số trang web của bên thứ ba được mô tả là liên kết liên kết. Các liên kết liên kết này cho phép chúng tôi có được một khoản hoa hồng nhỏ khi bạn nhấp và mua sản phẩm trên các trang web đó (nó không tốn kém gì thêm!). AttackData.com là người tham gia Chương trình Associates Associates của Amazon Services, một chương trình quảng cáo liên kết được thiết kế để cung cấp phương tiện cho chủ sở hữu trang web để kiếm phí quảng cáo bằng cách quảng cáo và liên kết với Amazon và bất kỳ trang web nào khác có thể liên kết với chương trình AMAZON Service LLC Associates . |