Примечания к выпуску Go 1.12 утверждает, что в стандартной библиотеке нет реализаций интерфейса draw.Quantizer
.
Вы можете реализовать один из них, используяГотовое решение третьей стороны (например, this или this ), или гораздо более простое решение - создать изображение с палитрой с использованием палитры WebSafe, нарисовать исходное изображение на этом инаконец сохраните изображение в палитре.
Вот как это можно сделать:
// img is your decoded image
pm := image.NewPaletted(img.Bounds(), palette.WebSafe)
draw.Draw(pm, img.Bounds(), img, image.ZP, draw.Over)
err = gif.Encode(&gifbuf, pm, nil)
Примечание: если вы используете и передаете draw.Quantizer
в gif.Encode()
, то внутри тоже создастсяновое изображение в палитре и используйте квантователь для расчета палитры, а затем нарисуйте старое изображение на это изображение в палитре.