Chẳng có công thức nèo cả vì khi xử lý ảnh, user có thể thay 1 màu trong hình = 1 màu bất kỳ, chẳng có cách nèo đoán trước cả.
Tuy nhiên, có cách sau có thể hoạt động trong mọi trường hợp:
- Khi bắt đầu save hình, loop qua từng pixel 1 của hình để đếm số lượng màu.
- Nếu số lượng màu <= 256, lấy tất cả số màu nì làm palette.
- Nếu số màu > 256. Lấy số lượng màu đếm được trong hình chia cho 256, lưu số nì vào biến x bất kỳ. Làm tròn lên số x lưu lại vào chính biến x.
- Trong số các màu có trong hình sau xử lý, tìm màu cố số hex nhỏ nhất & màu có số hex lớn nhất.
- Bắt đầu từ màu có số hex nhỏ nhất, +x cho đến khi > số lượng màu có được, sau mỗi lần +x, lưu số nhận được vào 1 array.
- Lặp qua array chứa tất cả màu có trong hình. Làm tròn số nì đến số gần nhất chứa trong array x. Lưu số mới trong 1 array y khác.
- Array y này chính là palette cần thiết.
Trong trường hợp có <= 256 màu sau xử lý. Chất lượng hình ảnh sẽ ko thay đổi. Tuy nhiên nếu có >256 màu sau xử lý. Chất lượng hình ảnh sẽ kém đi do phải giảm bớt số màu để file ko vượt quá 8bit màu.