Je regardais la classe Imageconverter, essayant de comprendre comment convertir une mémoire tampon à la couleur de 8 bits, mais je ne sais pas comment je ferais cela. Je cherchais également sur Internet et je ne pouvais trouver aucune réponse simple, ils parlaient tous d'images de grisalyse 8 bits. Je veux simplement convertir les couleurs d'une image à 8 bits ... rien d'autre, pas de redimensionner non rien. Est-ce que quelqu'un m'occupe de me dire comment faire cela? P>
3 Réponses :
Vous pouvez utiliser la méthode Pour plus de détails, ont un look ici a>. p> convert8 code> dans la classe Convertutil code> Classe. P>
Je ne pouvais pas utiliser Convertutil.Convert8, alors je devrais importer cette classe, mais je ne pouvais pas trouver ce que le code d'importation était. Avez-vous par hasard faire quoi / où c'est?
Vous pouvez utiliser JAI (Java Advanced Imaging), la bibliothèque d'images officielle Sun (Maintenant Oracle) pour le faire. P>
Le ColorQuanTerizerDescriptor montre le choix des processus de quantification que vous pouvez appliquer. p>
Avez-vous un exemple de code? Stackoverflow.com/Questtions/15312921/...
Cet extrait de code de l'article "Gifs transparents en Java" AT G-man's Uber Software Engineering Blog em> fonctionne bien:
public static void main(String[] args) throws Exception {
BufferedImage src = convertRGBAToIndexed(ImageIO.read(new File("/src.jpg")));
ImageIO.write(src, "gif", new File("/dest.gif"));
}
public static BufferedImage convertRGBAToIndexed(BufferedImage src) {
BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED);
Graphics g = dest.getGraphics();
g.setColor(new Color(231, 20, 189));
// fill with a hideous color and make it transparent
g.fillRect(0, 0, dest.getWidth(), dest.getHeight());
dest = makeTransparent(dest, 0, 0);
dest.createGraphics().drawImage(src, 0, 0, null);
return dest;
}
public static BufferedImage makeTransparent(BufferedImage image, int x, int y) {
ColorModel cm = image.getColorModel();
if (!(cm instanceof IndexColorModel))
return image; // sorry...
IndexColorModel icm = (IndexColorModel) cm;
WritableRaster raster = image.getRaster();
int pixel = raster.getSample(x, y, 0); // pixel is offset in ICM's palette
int size = icm.getMapSize();
byte[] reds = new byte[size];
byte[] greens = new byte[size];
byte[] blues = new byte[size];
icm.getReds(reds);
icm.getGreens(greens);
icm.getBlues(blues);
IndexColorModel icm2 = new IndexColorModel(8, size, reds, greens, blues, pixel);
return new BufferedImage(icm2, raster, image.isAlphaPremultiplied(), null);
}
Travaillé bien, il suffit de supprimer la partie de transparence.
Vous devez probablement choisir un algorithme de quantification, c'est-à-dire. Quelque chose qui transforme la gamme de couleurs de vos images en une palette de 256 entrées.
Que voulez-vous dire par convertir les couleurs d'une image à 8 bits? Je suppose que vous voulez réduire l'espace colorimétrique? Voulez-vous effectuer une quantification de couleur?
Pourriez-vous que les gars me signent une bibliothèque / une API d'une sorte? Je n'ai aucune idée de ce dont vous parlez. Cela ressemble également à je serais capable de créer ma propre palette qui serait meilleure si possible si possible.