PIL: Konvertieren von RGB-Bildes zu einem bestimmten 8-bit-palette?
Mit Hilfe der Python Imaging Library, die ich anrufen kann
img.convert("P", palette=Image.ADAPTIVE)
oder
img.convert("P", palette=Image.WEB)
aber ist es ein Weg, um zu konvertieren, um eine beliebige palette?
p = []
for i in range(0, 256):
p.append(i, 0, 0)
img.convert("P", palette=p)
wo Sie die Zuordnung der einzelnen pixel zu der nächsten Farbe auf dem Bild? Oder ist das unterstützt Image.WEB
- und sonst nichts?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während Sie durch den source code von
convert()
ich sah, dass es Referenzenim.quantize
.quantize
können eine palette argument. Wenn Sie ein Bild mit einer palette, durch diese Funktion wird die palette und wenden Sie es auf das Bild.Beispiel:
Die andere Antwort hat bei mir nicht funktioniert (es hat auch einige wirklich schlechte Doppel palette-Konvertierung oder sowas), aber diese Lösung hat.
Den
ImagePalette
Modul docs ist erste Beispiel zeigt, wie Sie zum befestigen einer palette, um ein Bild, aber das Bild muss schon sein-Modus"P"
oder"L"
. Man kann aber die Anpassung der Beispiel, um zu konvertieren ein volles RGB-Bild eine palette Ihrer Wahl: