Cách chuyển đổi định dạng ảnh bằng Python | Học CNTT cùng FUNiX

Cách chuyển đổi định dạng ảnh bằng Python

Chia sẻ kiến thức 30/11/2022

Chuyển từ PNG sang JPEG và ngược lại một cách dễ dàng bằng cách sử dụng thư viện mạnh mẽ này.

Python nổi tiếng vì tính linh hoạt của nó. Bạn có thể tạo các công cụ tiện ích bằng Python để đơn giản hóa và tự động hóa một số tác vụ nhất định.

Cùng FUNiX tìm hiểu cách tạo trình chuyển đổi định dạng ảnh chỉ với một vài dòng code Python đơn giản. Dù đó là một tệp ảnh đơn lẻ hay tất cả các tệp trong một thư mục, bạn có thể dễ dàng chuyển đổi thành các định dạng khác nhau.

Cài đặt thư viện bắt buộc

Bạn cần cài đặt thư viện Pillow Python để xây dựng trình chuyển đổi định dạng ảnh bằng Python. Thư viện này giúp nâng cao khả năng xử lý hình ảnh của trình thông dịch Python của bạn. Bạn có thể tạo một công cụ xử lý ảnh chung bằng cách sử dụng một số mô-đun của thư viện này, trong đó hữu ích nhất là các mô-đun Image , ImageFile , ImageFilter và ImageStat.

 

Chạy lệnh sau trong terminal để cài đặt thư viện Pillow Python:

pip install pillow

Khi đã cài đặt Pillow, bạn đã sẵn sàng làm việc với hình ảnh.

Thuộc tính tải và hiển thị của một hình ảnh

Trước tiên, bạn cần nhập mô-đun Imagetừ thư viện PIL để thiết lập code. Tiếp theo, bạn cần sử dụng phương thức Image.open() để tải ảnh và gán nó cho một biến. Khi bạn đã tải ảnh, bạn có thể hiển thị hình ảnh đó bằng phương thức show().

Code chuyển đổi định dạng hình ảnh có sẵn trong kho lưu trữ GitHub và bạn có thể sử dụng nó miễn phí theo Giấy phép MIT.

from PIL import Image
image = Image.open('sample-image.jpg')
image.show()

Ảnh mà bạn đã truyền làm tham số cho phương thức open() sẽ mở ra sau khi bạn thực thi code.

Mô-đun Image cung cấp một số thuộc tính khác mà bạn có thể sử dụng để biết thêm thông tin về ảnh.

# Importing library
from PIL import Image
 
# Loading the image
image = Image.open('sample-image.jpg')
 
# Prints the name of the file
print("Filename: ", image.filename)
 
# Prints the format of the file
# Eg- PNG, JPG, GIF, etc.
print("Format: ", image.format)
 
# Prints the mode of the file
# Eg- RGB, RFBA, CMYK, etc.
print("Mode: ", image.mode)
 
# Prints the size as a width and height tuple (in pixels)
print("Size: ", image.size)
 
# Prints the width of the image (in pixels)
print("Width: ", image.width)
 
# Prints the height of the image (in pixels)
print("Height: ", image.height)
 
# Closing the image
image.close()

Bạn sẽ thấy một số dữ liệu:

Cách chuyển đổi định dạng ảnh bằng Python

Bạn chỉ có thể chuyển đổi định dạng ảnh bằng phương thức save (). Bạn chỉ cần chuyển filename và phần mở rộng mới làm tham số cho phương thức save() . Phương thức save() sẽ tự động xác định phần mở rộng mà bạn đã chuyển và sau đó lưu ảnh ở định dạng đã xác định. Nhưng trước khi sử dụng phương thức save(), bạn có thể cần chỉ định chế độ (mode) của hình ảnh (RGB, RGBA, CMYK, HSV, v.v.).

 

Theo tài liệu Pillow chính thức, chế độ của ảnh là một chuỗi xác định loại và độ sâu của pixel trong ảnh. Thư viện Pillow hỗ trợ 11 chế độ bao gồm các chế độ tiêu chuẩn sau:

RGB (điểm ảnh 3×8-bit, màu sắc trung thực)

RGBA (pixel 4×8-bit, màu sắc trung thực với mặt nạ trong suốt)

CMYK (4×8-bit pixel, tách màu)

HSV (3×8-bit pixel, Hue, Saturation (độ bão hòa của màu), Value color space)

Cách chuyển đổi ảnh từ PNG sang JPG và JPG sang PNG

Bạn cần chuyển chuỗi filename.jpg làm tham số cho phương thức save() để chuyển đổi các tệp hình ảnh ở bất kỳ định dạng nào (PNG, GIF v.v.) sang định dạng JPG. Ngoài ra, bạn cần cung cấp chế độ của ảnh. Đoạn code sau chuyển đổi định dạng ảnh từ PNG sang JPG:

# Importing Library
from PIL import Image
 
# Loading the image
image = Image.open('sample-png-image.png')
 
# Specifying the RGB mode to the image
image = image.convert('RGB')
 
# Converting an image from PNG to JPG format
image.save("converted-jpg-image.jpg")
print("Image successfully converted!"

Bạn sẽ mất bất kỳ độ trong suốt nào trong một ảnh nếu chuyển đổi nó sang định dạng JPG. Nếu bạn cố duy trì độ trong suốt bằng cách sử dụng chế độ RGBA, Python sẽ gặp lỗi.

Bạn có thể chuyển đổi hình ảnh ở bất kỳ định dạng nào sang PNG bằng cách sử dụng phương thức save(). Bạn chỉ cần chuyển ảnh PNG làm tham số cho phương thức save(). Đoạn code sau chuyển đổi định dạng ảnh từ JPG sang PNG:

# Importing Library
from PIL import Image
 
# Loading the image
image = Image.open('sample-jpg-image.jpg')
 
# Converting image from JPG to PNG format
image.save("converted-png-image.png")
print("Image successfully converted!")

Việc chuyển đổi ảnh sang PNG sẽ bảo toàn độ trong suốt của ảnh. Ví dụ: nếu bạn chuyển đổi ảnh GIF trong suốt sang ảnh PNG, kết quả bạn nhận được sẽ vẫn là ảnh trong suốt.

Cách chuyển đổi ảnh sang bất kỳ định dạng nào khác bằng Python

Tương tự như các bước trên, bạn có thể chuyển đổi ảnh ở và sang bất kỳ định dạng nào bằng cách sử dụng phương thức save(). Bạn chỉ cần cung cấp phần mở rộng hình ảnh (.webp, .png, .bmp, v.v.) chính xác cho phương thức save(). Ví dụ: đoạn code sau chuyển đổi hình ảnh từ định dạng PNG sang WebP:

# Importing Library
from PIL import Image
 
# Loading the image
image = Image.open('sample-transparent-png-image.png')
 
# Converting an image from PNG to WEBP format
image.save("converted-webp-image.webp")
print("Image successfully converted!")

Xử lý lỗi khi thiếu tệp ảnh

Trong trường hợp code không tìm thấy ảnh đầu vào, nó sẽ báo lỗi. Bạn có thể xử lý điều này bằng cách sử dụng ngoại lệ (exception) Python FileNotFoundError.

# Importing Library
from PIL import Image
 
try:
    # Loading the image
    image = Image.open('wrong-filename.jpg')
 
    # Converting image from JPG to PNG format
    image.save("converted-png-image.png")
    print("Image successfully converted!")
 
except FileNotFoundError:
    print("Couldn't find the provided image")

Chuyển đổi tất cả các ảnh trong một thư mục sang một định dạng khác

Nếu bạn chuyển đổi tất cả các ảnh trong một thư mục sang một định dạng khác, bạn có thể dễ dàng thực hiện việc đó chỉ với một vài dòng code bằng Python. Bạn cần nhập thư viện glob để lặp qua các tệp trong thư mục hiện tại hoặc bên trong một thư mục nhất định. Đoạn code sau chuyển đổi tất cả các ảnh JPG trong thư mục hiện tại sang định dạng PNG:

 
from PIL import Image
import glob
  
for file in glob.glob("*.jpg"):
    image = Image.open(file)
    image.save(file.replace("jpg", "png"))

Nếu bạn muốn chuyển đổi một tập hợp các tệp khác, hãy thay đổi tham số chuỗi mà bạn chuyển cho phương thức global().

Xây dựng Giao diện đồ họa người dùng bằng Python

Các thư viện Python như Pillow giúp bạn dễ dàng phát triển các công cụ để xử lý ảnh bằng Python. Bạn có thể thực hiện các tác vụ nhanh chóng với giao diện dòng lệnh nhưng Giao diện đồ họa người dùng (GUI) là điều cần thiết để tạo ra trải nghiệm thân thiện với người dùng. Bạn có thể tạo các ứng dụng GUI chuyên dụng hơn bằng cách sử dụng các framework Python như Tkinter và wxPython.

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/python-convert-image-file-format/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!