Hướng dẫn how do you rotate and resize an image in python? - làm thế nào để bạn xoay và thay đổi kích thước một hình ảnh trong python?
Nội dung Show
Giới thiệuCách thay đổi kích thước/xoay hình ảnh bằng PythonChúng tôi sẽ đi qua cách thay đổi kích thước/xoay hình ảnh bằng Python. Bạn có biết rằng sử dụng Python, bạn có thể tự động hóa và thực hiện việc này trong một công việc hàng loạt trên nhiều hình ảnh? Thao tác hình ảnh không cần phải là một nhiệm vụ chế giễu. Hôm nay chúng tôi sẽ xem xét cách bạn có thể lập trình bằng cách sử dụng Python thực hiện các hoạt động này mở ra rất nhiều khả năng và có thể là một trình tiết kiệm thời gian rất lớn. Chúng tôi sẽ phá vỡ điều này trong các phần sau:
Tôi đã sử dụng thành công này trong các dự án khác nhau và nó hoạt động rất tốt và đã tiết kiệm cho tôi rất nhiều thời gian thay đổi kích thước hình ảnh bằng tay bằng cách sử dụng các trình chỉnh sửa hình ảnh giao diện người dùng đồ họa vì tôi chỉ có thể chạy mã của mình và thay đổi kích thước rất nhiều tệp. Chúng tôi sẽ từng chỉ đưa bạn lên và chạy dưới 5 phút, bạn không cần phải có bất kỳ kiến thức lập trình nào để sử dụng công cụ chúng tôi sẽ phát triển ở đây. Đây là một hướng dẫn đầy đủ và nên bao gồm tất cả các câu hỏi của bạn về việc sử dụng Python để thay đổi kích thước và xoay các tệp hình ảnh. Tất cả các mã và ví dụ về cách làm điều này có thể được tìm thấy trong liên kết GitHub ở đây. Tại sao sử dụng Python cho các phép biến đổi hình ảnhCó nhiều lý do về lý do tại sao ai đó muốn giới thiệu lập trình để thực hiện các phép biến đổi hình ảnh. Mặc dù chúng tôi sẽ tập trung vào phần này rất nhiều trong phần này, tôi sẽ đi vào các chi tiết cụ thể hơn về lý do tại sao bạn muốn sử dụng Python một cách cụ thể. Python có một bộ thư viện phong phú và một bộ thư viện rất giỏi trong việc trừu tượng hóa rất nhiều logic phức tạp cho thao tác hình ảnh. Thư viện chúng tôi sẽ tận dụng ở đây được gọi là gối. Nó có một khung rất trưởng thành và có thể thực hiện rất nhiều hoạt động, nhiều trong số đó nằm ngoài phạm vi của tài liệu này. Tuy nhiên, vì tôi muốn cung cấp cho bạn bối cảnh các khái niệm tương tự, chúng tôi sẽ sử dụng ở đây để xoay và thay đổi kích thước hình ảnh có thể được thực hiện trên bất kỳ tính năng nào khác mà thư viện cung cấp. Dưới đây tôi sẽ cung cấp cho bạn một danh sách lý do tại sao tôi nghĩ rằng nó rất hữu ích để thực hiện chương trình này và không phải với trình chỉnh sửa hình ảnh truyền thống. Ưu điểm
Danh sách trên là một số lượng tốt các lý do tại sao điều này có thể hữu ích cho bạn, tuy nhiên có một số nhược điểm cũng như điều này có thể có trong toàn bộ quá trình hoặc những điều bạn có thể muốn xem. Nhược điểm
Cách thiết lập gối PythonChúng tôi sẽ nhanh chóng bao gồm cách thiết lập gối trong máy tính của bạn để chúng tôi có thể bắt đầu kiểm tra mã bên dưới. Để làm điều này, bước đầu tiên chúng ta cần làm là tạo ra một môi trường ảo và kích hoạt nó. $ virtualenv venv created virtual environment CPython3.9.12.final.0-64 in 225ms creator CPython3Posix(dest=/Users/alex/code/unbiased/python-resize-rotate-images/venv, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/alex/Library/Application Support/virtualenv) added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator $ source venv/bin/activate Bước tiếp theo là cài đặt thư viện gối được xác định trong tệp yêu cầu như được hiển thị trong repo GitHub. $ pip install -r requirements.txt Collecting pillow Downloading Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl (2.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 8.9 MB/s eta 0:00:00 Installing collected packages: pillow Successfully installed pillow-9.1.0 $ ipython In [1]: import PIL In [2]: PIL.__version__ Out[2]: '9.1.0' Như đã hiển thị ở trên, chúng tôi đã cài đặt thành công thư viện gối và kiểm tra phiên bản để đảm bảo nó nhập tốt. Trong trường hợp này, chúng tôi sẽ sử dụng phiên bản 9.1.0 nhưng bạn có thể sử dụng bất kỳ phiên bản nào hoạt động cho bạn miễn là nó muộn hơn thế này. Khả năng tương thích trên các phiên bản rất nhất quán nên tất cả các ví dụ ở đây sẽ hoạt động tốt. Cách thay đổi kích thước hình ảnh bằng cách sử dụng Python trong khi bảo tồn tỷ lệ khung hìnhĐối với tất cả các ví dụ dưới đây, chúng tôi sẽ sử dụng tệp logo mã hóa không thiên vị được hiển thị bên dưới. Logo mã hóa không thiên vịMột số điều cần lưu ý và bạn có thể thấy ảnh chụp màn hình dưới đây là:
Đối với tất cả các ví dụ dưới đây, chúng tôi sẽ sử dụng tệp logo mã hóa không thiên vị được hiển thị bên dưới. Logo mã hóa không thiên vị Một số điều cần lưu ý và bạn có thể thấy ảnh chụp màn hình dưới đây là:
from PIL import Image src_img = 'test_images/unbiased-coder-logo.png' dst_img = 'test_images/unbiased-coder-logo-half.png' print (f'Using source image: {src_img}') with Image.open(src_img) as im: print (f'Found image width: {im.width} and height: {im.height}') new_width = im.width // 2 new_height = im.height // 2 print (f'Using new image width: {new_width} and height: {new_height}') im_resized = im.resize((new_width, new_height)) im_resized.save(dst_img, 'png') print (f'Saved half resized image: {dst_img}') Mã thay đổi kích thước hình ảnh theo các bước được nêu dưới đây: $ python ./python_resize_image_aspect_ratio.py Using source image: test_images/unbiased-coder-logo.png Found image width: 2048 and height: 1152 Using new image width: 1024 and height: 576 Saved half resized image: test_images/unbiased-coder-logo-half.png Đầu tiên chúng tôi xác định hình ảnh nguồn (hình trên) và hình ảnh đích là vị trí của nơi chúng tôi sẽ lưu nó. Bây giờ chúng tôi sẽ sử dụng thư mục Test_images để lưu trữ tất cả các bài kiểm tra của chúng tôi. Cách thay đổi kích thước hình ảnh bằng cách sử dụng Python trong khi bảo tồn tỷ lệ khung hìnhĐối với tất cả các ví dụ dưới đây, chúng tôi sẽ sử dụng tệp logo mã hóa không thiên vị được hiển thị bên dưới.
Kích thước: Nó có kích thước 131kb, điều này rất quan trọng để biết vì chúng tôi sẽ thay đổi kích thước nó trong một trong các ví dụ. Kích thước: Đó là 2048 × 1152 Điều này cũng tốt để biết xem việc thay đổi kích thước sẽ hoạt động sau khi chúng tôi thực thi một số mã sau này.Bây giờ chúng tôi có thông tin liên quan đến hình ảnh thử nghiệm mà chúng tôi sẽ sử dụng, chúng tôi sẽ tiến hành thực hiện ví dụ đầu tiên của chúng tôi, đó là thay đổi kích thước hình ảnh đồng thời duy trì tỷ lệ khung hình của nó. Hơn nữa, bạn có thể thêm một kiểm tra tiện ích mở rộng tệp ở đó trong trường hợp bạn có các tệp khác mà bạn không muốn xử lý. Vì vậy, điều này có thể chỉ đơn giản là kiểm tra .png trong tên tệp. Nếu bạn đang xử lý một loại tệp khác và chỉ muốn nó được xử lý, bạn chỉ cần điều chỉnh điều kiện IF thành một thứ khác như .jpg. for src_img in os.listdir('test_images'): if '.png' in src_img: dst_img = src_img + '-new.png' Khi mã được gói gọn trong vòng lặp, bạn chỉ cần sử dụng lại mã ở trên và nó sẽ hoạt động. Cách tạo hình thu nhỏ hình ảnh bằng PythonPhần mã tiếp theo chúng tôi sẽ trình diễn là tạo ra một hình thu nhỏ hình ảnh. Điều này rất hữu ích trong rất nhiều ứng dụng loại CMS nhưng có rất nhiều trường hợp sử dụng khác mà bạn sẽ cần để tạo một hoặc một loạt hình thu nhỏ từ rất nhiều hình ảnh. Cấu trúc của mã rất giống với ở trên và hoạt động theo cách sau:
from PIL import Image src_img = 'test_images/unbiased-coder-logo.png' dst_img = 'test_images/unbiased-coder-logo-thumbnail.png' print (f'Using source image: {src_img}') with Image.open(src_img) as im: print (f'Found image width: {im.width} and height: {im.height}') new_width = 128 new_height = 128 print (f'Generating a 128x128 thumbnail') im_thumbnail = im.resize((new_width, new_height)) im_thumbnail.save(dst_img, 'png') print (f'Saved thumbnail image: {dst_img}') Để xác minh, chúng tôi cũng thực thi mã để tạo hình ảnh thu nhỏ. $ python ./python_thumbnail_image.py Using source image: test_images/unbiased-coder-logo.png Found image width: 2048 and height: 1152 Generating a 128x128 thumbnail Saved thumbnail image: test_images/unbiased-coder-logo-thumbnail.png Khi chúng tôi mở nó, chúng tôi nhận thấy tệp đã thay đổi đáng kể và điều này là do bây giờ nó nhỏ hơn nhiều so với phiên bản gốc. Việc giảm bây giờ là tất cả các cách xuống 12kb và kích thước chính xác là 128 × 128 như chúng tôi đã chỉ định trong mã hình thu nhỏ của chúng tôi. Cách tạo hình thu nhỏ hình ảnh bằng PythonĐiều này xác minh thành công rằng hình thu nhỏ đã được tạo chính xác. Cách xoay hình ảnh bằng PythonCuối cùng, chúng tôi sẽ trình diễn một tính năng hữu ích hơn đang quay một hình ảnh bằng gối Python. Mã này rất giống với các ví dụ trước và hoạt động như sau:
from PIL import Image src_img = 'test_images/unbiased-coder-logo.png' dst_img = 'test_images/unbiased-coder-logo-rotated.png' print (f'Using source image: {src_img}') with Image.open(src_img) as im: print (f'Rotating image by 45 degrees') im_rotated = im.rotate(angle=45) im_rotated.save(dst_img, 'png') print (f'Saved rotated image: {dst_img}') Như một bước tiếp theo, chúng tôi thực hiện mã xoay mới để tạo hình ảnh xoay mới. $ python ./python_rotate_image.py Using source image: test_images/unbiased-coder-logo.png Rotating image by 45 degrees Saved rotated image: test_images/unbiased-coder-logo-rotated.png Như được hiển thị ở trên mã được thực thi và tệp đầu ra đã được lưu thành công vào thư mục hình ảnh thử nghiệm với thẻ tên xoay. Trong trường hợp này để xác minh rằng mã hoạt động, chúng tôi có thể chỉ cần mở tệp và xem nó trông trực quan như thế nào khi chúng tôi giành chiến thắng khi thấy nhiều sự khác biệt về kích thước tệp và tọa độ của nó. Như được hiển thị bên dưới hình ảnh trông thành công được quay thành công 45 độ. Cách xoay hình ảnh bằng PythonCuối cùng, chúng tôi sẽ trình diễn một tính năng hữu ích hơn đang quay một hình ảnh bằng gối Python. Mã này rất giống với các ví dụ trước và hoạt động như sau: Chúng tôi chỉ định các tệp hình ảnh nguồn và đích của chúng tôiChúng tôi chỉ định một góc quay trong trường hợp này, chúng tôi sẽ xoay hình ảnh 45 độ Cuối cùng gọi chức năng xoay và lưu tệp đầu ra Như một bước tiếp theo, chúng tôi thực hiện mã xoay mới để tạo hình ảnh xoay mới. Như được hiển thị ở trên mã được thực thi và tệp đầu ra đã được lưu thành công vào thư mục hình ảnh thử nghiệm với thẻ tên xoay. Trong trường hợp này để xác minh rằng mã hoạt động, chúng tôi có thể chỉ cần mở tệp và xem nó trông trực quan như thế nào khi chúng tôi giành chiến thắng khi thấy nhiều sự khác biệt về kích thước tệp và tọa độ của nó. Như được hiển thị bên dưới hình ảnh trông thành công được quay thành công 45 độ. Điều này chứng minh thành công rằng mã xoay đã hoạt động. Nếu bạn muốn bạn có thể thực hiện cùng một mã với tệp hình ảnh ví dụ của bạn hoặc thậm chí sử dụng hình ảnh logo mã hóa không thiên vị mà tôi đã cung cấp trong repo GitHub ở đây. Sự kết luận
Làm thế nào để bạn xoay một hình ảnh trong Python?Chức năng xoay () được sử dụng để xoay hình ảnh bằng một góc trong Python. is used to rotate an image by an angle in Python.
Làm thế nào để bạn thay đổi kích thước một hình ảnh trong Python?thay đổi kích thước () trả về một bản sao kích thước của hình ảnh này ... Cú pháp: Image.Resize (kích thước, mẫu lại = 0). Parameters:. Kích thước-Kích thước được yêu cầu tính bằng pixel, dưới dạng 2-Tuple: (chiều rộng, chiều cao) .. Mẫu lại - một bộ lọc lấy mẫu tùy chọn. Đây có thể là một trong những PIL. Hình ảnh. Gần nhất (sử dụng hàng xóm gần nhất), pil. Hình ảnh. .... Trả về Loại: Một đối tượng hình ảnh .. Làm thế nào để tôi thay đổi kích thước thủ công một hình ảnh trong Python?Để thay đổi kích thước một hình ảnh, bạn gọi phương thức thay đổi kích thước () trên nó, chuyển theo đối số tuple hai số nguyên đại diện cho chiều rộng và chiều cao của hình ảnh thay đổi kích thước.Hàm không sửa đổi hình ảnh đã sử dụng;Thay vào đó, nó trả về một hình ảnh khác với kích thước mới.call the resize() method on it, passing in a two-integer tuple argument representing the width and height of the resized image. The function doesn't modify the used image; it instead returns another Image with the new dimensions.
Làm thế nào để bạn thay đổi kích thước một hình ảnh theo tỷ lệ trong Python?Cách thay đổi kích thước hình ảnh theo tỷ lệ khung hình cố định với thư viện PIL của Python.. Dòng đầu tiên: Xác định một số cố định để tạo tỷ lệ .. Dòng thứ hai: Mở hình ảnh .. Dòng thứ ba: Tạo phần trăm chiều cao theo giá trị cố định của bạn .. Dòng thứ tư: Tạo chiều rộng hình ảnh bằng cách nhân nó với giá trị chiều cao tỷ lệ .. |