J'ai le méthode suivante qui réduit la taille de la palette dans une image PNG.
private BufferedImage setColour(BufferedImage image) {
IndexColorModel cm = new IndexColorModel(
3,
6,
new byte[]{-100, 0, 0, 0, -1, 0}, // r
new byte[]{0, -100, 60, 0, -1, 0}, // g
new byte[]{0, 0, 0, -100, -1, 0}); // b
BufferedImage img = new BufferedImage(
image.getWidth(), image.getHeight(),
BufferedImage.TYPE_BYTE_INDEXED,
cm);
Graphics2D g2 = img.createGraphics();
g2.drawImage(image, 0, 0, null);
g2.dispose();
return img;
}
Je comprends que chaque tableau d'octets est utilisé pour indexer la palette associée à un pixel PNG. Ce que je ne comprends pas, c'est comment définir les valeurs dans les tableaux d'octets de sorte que je puisse seulement légèrement réduire le nombre de couleurs dans l'image PNG.