CodeGym /Các khóa học /Python SELF VI /Trộn và kết hợp hình ảnh

Trộn và kết hợp hình ảnh

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Chuẩn bị

Tải hình ảnh để kết hợp

Trước khi làm việc với nhiều hình ảnh, cần phải tải chúng lên. Pillow cho phép làm việc với hầu hết các định dạng hình ảnh phổ biến như JPEG, PNG, BMP, và GIF.

Python

from PIL import Image

# Tải hình ảnh
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")

Ở đây, chúng ta tải hai hình ảnh: hình nền và hình để chèn. Điều quan trọng là đối với một số phương pháp, cả hai hình ảnh cần có cùng kích thước.

2. Chèn chồng hình ảnh

Phương pháp paste()

Phương pháp paste() cho phép chèn một hình ảnh lên trên hình khác tại tọa độ chỉ định. Cách này hữu ích khi cần đặt một hình lên trên hình khác hoặc tạo hiệu ứng cắt ghép.

Python

# Thay đổi kích thước foreground để phù hợp với kích thước background
foreground = foreground.resize(background.size)

# Chèn hình ảnh lên hình nền
background.paste(foreground, (50, 50))  # Đặt foreground tại tọa độ (50, 50)

# Lưu kết quả
background.save("pasted_image.jpg")

Ở đây, hình foreground được chèn lên background bắt đầu từ điểm chèn (50, 50). Nếu foreground vượt quá kích thước của background, phần đó sẽ bị cắt đi.

Sử dụng mask với paste()

Phương pháp paste() cũng hỗ trợ sử dụng mask, cho phép chèn hình ảnh một phần, giữ nguyên các vùng trong suốt. Mask phải ở chế độ L (màu xám) hoặc RGBA.

Python

# Tạo mask
mask = Image.open("mask.png").convert("L")  # Chuyển mask sang màu xám

# Chèn hình ảnh với mask
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")

Mask mask.png xác định phần nào của foreground sẽ hiển thị và cho phép chèn hình ảnh một cách chính xác lên hình nền.

3. Pha trộn hình ảnh

Phương pháp blend()

Phương pháp blend() cho phép pha trộn hai hình ảnh với độ trong suốt tương ứng. Phương pháp này tạo ra một hình ảnh mới, là sự pha trộn của hai hình ảnh gốc. Để sử dụng blend(), cả hai hình ảnh phải có cùng kích thước.

Pha trộn hình ảnh cơ bản

Python

# Thay đổi kích thước hai hình cho cùng kích thước
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))

# Pha trộn hình ảnh với hệ số alpha
blended_image = Image.blend(background, foreground, alpha=0.5)

# Lưu kết quả
blended_image.save("blended_image.jpg")

Tham số alpha xác định mức độ trong suốt của hình foreground. Nếu alpha = 0.5, hai hình ảnh sẽ pha trộn đồng đều. Giá trị alpha = 0.0 làm cho foreground hoàn toàn trong suốt (chỉ thấy nền), còn alpha = 1.0 làm cho hình nền hoàn toàn trong suốt (chỉ thấy foreground).

4. Ghép hình ảnh với mask

Phương pháp composite()

Phương pháp composite() cho phép kết hợp hai hình ảnh dựa trên mask, xác định phần nào của mỗi hình sẽ hiển thị. Phương pháp này rất tiện trong việc tạo các bố cục phức tạp và ghép hình ảnh chính xác.

Ví dụ: Sử dụng composite() để kết hợp hình ảnh

Python

# Đảm bảo cả hình và mask đều có cùng kích thước
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))

# Tạo bố cục với mask
composited_image = Image.composite(foreground, background, mask)

# Lưu hình ảnh
composited_image.save("composited_image.jpg")

Mask xác định phần nào của foregroundbackground sẽ hiển thị trên hình cuối cùng. Vùng trắng của mask làm hiển thị foreground, vùng đen làm hiển thị background.

5. Ví dụ

Ví dụ kết hợp các phương pháp paste(), blend(), và composite()

Hãy kết hợp những phương pháp này để tạo một bố cục phức tạp hơn. Giả sử chúng ta có một hình nền, một hình ảnh với độ trong suốt, và một mask.

Python

from PIL import Image

# Tải hình ảnh
background = Image.open("background.jpg").resize((500, 500))
foreground = Image.open("foreground.png").resize((500, 500))
mask = Image.open("mask.png").convert("L").resize((500, 500))

# 1. Pha trộn hình nền và foreground với độ trong suốt
blended_image = Image.blend(background, foreground, alpha=0.3)

# 2. Chèn với mask vào hình cuối
final_composite = Image.composite(foreground, blended_image, mask)

# Lưu kết quả cuối cùng
final_composite.save("final_composition.jpg")

Ví dụ này chỉ ra cách áp dụng lần lượt blend()composite() để tạo bố cục nhiều lớp.

Ứng dụng thực tế của các phương pháp ghép hình

  1. Tạo ảnh ghép: Phương pháp paste() cho phép thêm nhiều hình ảnh trên một khung vẽ để tạo ảnh ghép và mosaic.
  2. Hiệu ứng chồng và độ trong suốt: Phương pháp blend() cho phép tạo các chuyển tiếp mượt mà giữa các hình ảnh, phù hợp cho chỉnh sửa ảnh và tạo hiệu ứng.
  3. Bố cục với mask: Phương pháp composite() cho phép kiểm soát chính xác phần nào của hình ảnh sẽ hiển thị, tạo bố cục phức tạp với mask.

So sánh các phương pháp

Phương pháp Mô tả Ứng dụng
paste() Chèn một hình ảnh lên trên hình khác Ảnh ghép, đặt một hình lên hình khác
blend() Pha trộn hai hình ảnh với độ trong suốt định trước Chuyển tiếp mượt mà và hiệu ứng chồng
composite() Kết hợp hai hình ảnh dựa trên mask Bố cục phức tạp và chèn chính xác
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION