Chuyển đến nội dung

Chuyển BMP sang PNG

BMP lưu từng pixel ở dạng thô — PNG lưu đúng các pixel đó theo kiểu lossless với dung lượng chỉ bằng một phần nhỏ. Cùng bức ảnh, định dạng hiện đại, không lưu trữ gì cả.

  • Không bao giờ lưu trữ
  • Không xếp hàng, không phải chờ
  • Không cần đăng ký, không watermark

Cách hoạt động

1

Thêm file BMP

Thả bao nhiêu file .bmp tùy thích vào trang.

2

Chuyển đổi

Mỗi file trở thành một PNG nén lossless — pixel y hệt, file nhỏ hơn nhiều.

3

Tải xuống

Lưu từng file hoặc dưới dạng file ZIP.

Cùng các pixel, dung lượng chỉ còn một phần nhỏ

File BMP thường hoàn toàn không được nén. Từng pixel được ghi nguyên văn, mỗi pixel ba hoặc bốn byte, các hàng được đệm cho tròn bội số bốn byte — đó là lý do một ảnh chụp màn hình 1920×1080 nặng khoảng 8 MB và một bức ảnh mười hai megapixel gần 36 MB. PNG lưu đúng các pixel đó và nén lossless, nên bức ảnh không thay đổi gì và file thường nhỏ đi từ năm đến hai mươi lần. Với ảnh chụp màn hình hay sơ đồ có nhiều vùng màu phẳng, tỷ lệ nằm ở mức cao của khoảng đó. Đây là phép chuyển đổi hiếm hoi hoàn toàn không có đánh đổi.

Có một chi tiết nên kiểm tra ở kết quả: nền trong suốt trong BMP 32-bit không đáng tin cậy, và không phải do bất cứ điều gì làm ở đây. Header bitmap Windows ban đầu không có khái niệm kênh alpha, nên byte thứ tư của mỗi pixel đơn giản là bị bỏ trống; các header sau này định nghĩa nó đúng cách, nhưng rất nhiều phần mềm vẫn ghi theo kiểu cũ và rất nhiều bộ giải mã vẫn bỏ qua kiểu mới. Vì vậy một file BMP trông trong suốt trong phần mềm tạo ra nó có thể được giải mã thành nền đục, với byte alpha bị đọc như byte đệm. Nếu điều này quan trọng, hãy xem file PNG trước khi dùng.

Thứ tự hàng là điểm kỳ quặc còn lại. Theo quy ước, BMP lưu các hàng từ dưới lên trên, một quyết định thừa hưởng từ cách phần cứng đồ họa thời đầu truy cập bộ nhớ, và đánh dấu file lưu từ trên xuống bằng chiều cao âm. Bộ giải mã xử lý được cả hai, nên trên thực tế bạn không nhận ra — đây đơn giản là lý do một file BMP ghi dở hoặc bị cắt cụt lại hiện ra lộn ngược thay vì bị mất một phần.

Mọi biến thể Windows thông dụng đều chuyển được. Những góc khuất của định dạng — bitmap 4-bit và 8-bit nén RLE, header OS/2 từ đầu thập niên 90 và dạng hiếm có nhúng JPEG — phụ thuộc vào bộ giải mã, và nếu một file như vậy bị từ chối, công cụ sẽ báo rõ thay vì tạo ra một bức ảnh lộn xộn.

Khi bạn cần công cụ khác

Để thu nhỏ PNG thêm nữa, oxipng -o 4 out.png hoặc optipng thường giảm được thêm mười đến ba mươi phần trăm mà không thay đổi một pixel nào, còn pngquant giảm nhiều hơn hẳn bằng cách chuyển về bảng màu — cách này mất dữ liệu, nhưng với ảnh chụp màn hình hay sơ đồ thì thường không thấy được.

Với cả một thư mục, lệnh magick mogrify -format png *.bmp của ImageMagick chuyển mọi file chỉ trong một dòng, và libvips làm điều tương tự với lượng bộ nhớ ít hơn nhiều trên ảnh rất lớn. Nếu BMP là ảnh chụp chứ không phải đồ họa, PNG hoàn toàn là đích đến sai — JPG sẽ nhẹ bằng một phần mười với mức chênh lệch chất lượng không ai nhìn ra.

Câu hỏi thường gặp

Có mất chút chất lượng nào không?

Không hề — PNG là định dạng lossless. File PNG giải mã ra đúng các pixel mà BMP chứa; chỉ những byte lãng phí bị bỏ đi.

File sẽ nhỏ đi bao nhiêu?

Thường nhỏ hơn 50-95% tùy nội dung — BMP gần như không nén, nên hầu như cách nào cũng thắng.

Ngày nay BMP từ đâu ra?

Ảnh chụp màn hình Windows từ các công cụ cũ, MS Paint, thiết bị khoa học, hệ thống nhúng và phần mềm đời cũ. Định dạng này có từ thời Windows 3.0.

File của tôi có bị lưu lại ở đâu không?

Không — quá trình chuyển đổi không lưu trữ gì cả.

PNG có chứa được mọi thứ BMP chứa không?

Có, và hơn thế — PNG có thêm nền trong suốt thực sự, thứ mà BMP gần như chưa bao giờ mang theo.

Nên biết: Các biến thể BMP hiếm gặp (nén RLE, header OS/2) phụ thuộc vào bộ giải mã của trình duyệt; mọi file BMP Windows thông dụng đều chuyển được.

Đặt công cụ này lên website của bạn

Miễn phí cho mọi blog, trang lớp học hay bài viết hướng dẫn. Chỉ cần dán một đoạn mã là khách truy cập có thể dùng ngay trên trang của bạn.