Nous le faisons dans le projet JGraphX. Téléchargez le code source et jetez un oeil dans le paquet com.mxgraph.util.png, vous y trouverez trois classes pour l'encodage que nous avons copiées à partir des sources Apache Batik. Un exemple d'utilisation se trouve dans com.mxgraph.examples.swing.editor.EditorActions dans la méthode saveXmlPng. édité légèrement le code ressemble:
mxPngEncodeParam param = mxPngEncodeParam
.getDefaultEncodeParam(image);
param.setCompressedText(new String[] { "mxGraphModel", xml });
// Saves as a PNG file
FileOutputStream outputStream = new FileOutputStream(new File(
filename));
try
{
mxPngImageEncoder encoder = new mxPngImageEncoder(outputStream,
param);
if (image != null)
{
encoder.encode(image);
}
}
finally
{
outputStream.close();
}
où l'image est le BufferedImage qui forme le .PNG et xml est la chaîne que nous souhaitons placer dans la section iTxt. "mxGraphModel" est la clé de cette chaîne xml (la section comprend un certain nombre de paires clé/valeur), évidemment vous la remplacez par votre clé. De plus, sous com.mxgraph.util.png, nous avons écrit une classe très simple qui extrait l'iTxt sans traiter l'image entière. Vous pouvez appliquer la même idée pour le bloc tEXt en utilisant mxPngEncodeParam.setText au lieu de setCompressedText(), mais la section de texte compressé autorise des sections de texte plus grandes.
est-ce pas seulement pour le décodage? – axel22