Cắt hình ảnh trong Python

Cắt ảnh là một tính năng thiết yếu trong các ứng dụng chỉnh sửa ảnh và thiết kế đồ họa. Nó cho phép bạn thay đổi kích thước hình ảnh và cắt bớt các cạnh của chúng. Trong khi xử lý hình ảnh hoặc xử lý chỉnh sửa hình ảnh trong ứng dụng Python, các nhà phát triển thường yêu cầu cơ chế cắt ảnh dễ dàng. Vì vậy, trong bài đăng blog này, chúng ta sẽ tìm hiểu cách cắt hình ảnh một cách liền mạch trong ứng dụng Python.

Thư viện Python để cắt hình ảnh

Để cắt ảnh, chúng tôi sẽ sử dụng Aspose.Imaging for Python. Đây là một thư viện đa năng cung cấp nhiều tính năng để làm việc với hình ảnh. Đặc biệt, nó cho phép bạn thực hiện các tác vụ chỉnh sửa hình ảnh cơ bản cũng như nâng cao một cách dễ dàng.

Bạn có thể tải xuống thư viện hoặc cài đặt nó vào các ứng dụng Python của mình từ PyPI.

> pip install aspose-imaging-python-net 

Cắt ảnh trong Python

Có hai cách để cắt hình ảnh bằng Aspose.Imaging for Python: sử dụng giá trị shift và sử dụng hình chữ nhật. Trong phương pháp giá trị dịch chuyển, chúng tôi chỉ định các giá trị trái, phải, trên và dưới cho dịch chuyển hình ảnh. Mặt khác, chúng tôi sử dụng hình chữ nhật để xác định vùng cắt xén trong phương pháp thứ hai.

Vì vậy, hãy cùng tìm hiểu từng phương pháp cắt xén hình ảnh nêu trên với sự trợ giúp của các đoạn mã Python.

Cắt hình ảnh có giá trị thay đổi trong Python

Các bước bên dưới trình bày cách cắt ảnh bằng cách sử dụng các giá trị dịch chuyển trong Python.

  • Đầu tiên, sử dụng phương thức Image.load() để tải hình ảnh dưới dạng RasterImage.
  • Sau đó, lưu hình ảnh vào bộ nhớ đệm để có hiệu suất tốt hơn.
  • Chỉ định các giá trị dịch chuyển trái, phải, trên và dưới.
  • Chuyển các giá trị shift sang phương thức RasterImage.crop() và cắt hình ảnh.
  • Cuối cùng, lưu hình ảnh đã cắt bằng phương thức RasterImage.save().

Đoạn mã sau đây cho thấy cách cắt hình ảnh trong Python.

import aspose.pycore as aspycore
from aspose.imaging import RasterImage, Image, Rectangle
import os


if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder

# Tải hình ảnh hiện có vào một thể hiện của lớp RasterImage
with aspycore.as_of(Image.load(os.path.join(data_dir, "template.jpg")), RasterImage) as raster_image:
	# Trước khi cắt, hình ảnh phải được lưu vào bộ nhớ đệm để có hiệu suất tốt hơn
	if not raster_image.is_cached:
		raster_image.cache_data()

	# Xác định giá trị dịch chuyển cho cả bốn phía
	left_shift = 10
	right_shift = 10
	top_shift = 10
	bottom_shift = 10
  
	# Dựa trên các giá trị dịch chuyển, áp dụng cắt xén hình ảnh
	raster_image.crop(left_shift, right_shift, top_shift, bottom_shift)
  
  	# Lưu hình ảnh đã cắt
	raster_image.save(os.path.join(data_dir, "result.jpg"))

if delete_output:
	os.remove(os.path.join(data_dir, "result.jpg"))

Dưới đây là ảnh chụp màn hình của hình ảnh đầu vào (đầu tiên) và phiên bản đã cắt của nó (thứ hai).

cắt ảnh trong Python
cắt ảnh trong Python

Cắt ảnh bằng hình chữ nhật

Trong phương pháp này, chúng tôi xác định một hình chữ nhật để cắt một vùng cụ thể trong hình ảnh được tải. Hình ảnh thu được chứa phần hình ảnh nằm bên trong hình chữ nhật đó. Sau đây là các bước để cắt ảnh bằng hình chữ nhật.

  • Đầu tiên, sử dụng phương thức Image.load() để tải hình ảnh dưới dạng RasterImage.
  • Sau đó, lưu trữ hình ảnh.
  • Tạo một Hình chữ nhật có kích thước mong muốn.
  • Truyền đối tượng Hình chữ nhật cho phương thức RasterImage.crop() và cắt hình ảnh.
  • Cuối cùng, lưu hình ảnh đã cắt bằng phương thức RasterImage.save().

Đoạn mã sau đây hiển thị việc cắt ảnh bằng hình chữ nhật trong Python.

import aspose.pycore as aspycore
from aspose.imaging import RasterImage, Image, Rectangle
import os

if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder

# Tải hình ảnh hiện có vào một thể hiện của lớp RasterImage
with aspycore.as_of(Image.load(os.path.join(data_dir, "template.jpg")), RasterImage) as raster_image:
	if not raster_image.is_cached:
		raster_image.cache_data()

	# Tạo một thể hiện của lớp Rectangle với kích thước mong muốn
	rectangle = Rectangle(20, 20, 20, 20)
  
  	# Cắt ảnh
	raster_image.crop(rectangle)
  
  	# Lưu hình ảnh
	raster_image.save(os.path.join(data_dir, "result.jpg"))

if delete_output:
	os.remove(os.path.join(data_dir, "result.jpg"))

Nhận thư viện cắt ảnh Python miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí và cắt ảnh mà không bị giới hạn về đánh giá.

Phần kết luận

Aspose.Imaging for Python cung cấp một giải pháp mạnh mẽ để cắt xén và xử lý hình ảnh. Bài đăng trên blog này đã cung cấp cho bạn một số phương pháp cắt xén hình ảnh mà bạn có thể dễ dàng tích hợp vào các ứng dụng Python của mình. Nâng cao khả năng xử lý hình ảnh của bạn với API chỉnh sửa hình ảnh Python mạnh mẽ này. Khám phá các tính năng tuyệt vời của nó bằng cách truy cập tài liệu và chia sẻ thắc mắc của bạn với chúng tôi qua diễn đàn của chúng tôi.

Xem thêm