À l'aide de Graphics2D pour superposer du texte sur une BufferedImage et de retourner une BufferedImage
J'ai vérifié nommé de la même manière à des questions, mais ils ne répondent pas à ce cas d'utilisation.
Essentiellement, j'ai été à la superposition du texte (texte) à un niveau donné de coordonnées (x,y) j'ai le dessous de la fonction dans un paquet;
protected BufferedImage Process2(BufferedImage image){
Graphics2D gO = image.createGraphics();
gO.setColor(Color.red);
gO.setFont(new Font( "SansSerif", Font.BOLD, 12 ));
gO.drawString(this.text, this.x, this.y);
System.err.println(this.text+this.x+this.y);
return image;
}
Je me sens comme im manque quelque chose manifestement évident; chaque référence à Graphics2D je trouve, c'est le traitement de jeux ou en écrivant directement à un fichier, mais je veux juste un BufferedImage retourné. avec l'overlay 'rendu'
Dans le code actuel, l'image s'affiche à la fin inchangé.
Merci!
- Êtes-vous essayer de modifier un fichier image? Ce que vous faites devrait fonctionner, mais vous êtes seulement de la modification d'une mémoire de la représentation de l'image.
- Aussi, êtes-vous sûr que x et y sont à l'intérieur de l'image? Essayez de peindre un carré aux coordonnées (0,0) pour un premier test
- En aparté, c'est à ce moment qu'il convient d'appeler
dispose()
sur leGraphics2D
instance. - non, un pré-traitées BufferedImage, aucun fichier de connexion à tout. En gros, j'ai une image de la source, et j'ai complètement distincte de l'entrée de définir où x,y sont, et le texte, donc j'ai littéralement envie de gifler ce texte à ceux coords ontop de la mémoire tampon d'image
- Je promets que je vais le nettoyer une fois que cela fonctionne 😀
- Votre texte dessin code fonctionne très bien pour moi. Je pense que le problème est à l'extérieur de la
Process2
méthode.
Vous devez vous connecter pour publier un commentaire.
La méthode
cordon de serrage()
utilise x et y pour la plus à gauche du personnage référence. Les numéros n'ont généralement aucun jambages; si la même chose est vraie detext
, une chaîne dessinée à la position (0,0) sera rendue entièrement à l'extérieur de l'image. Voir ce exemple.Addendum: Vous pouvez peut-être avoir des ennuis avec un incompatible modèle de couleur dans votre image. Une simple solution consiste à rendre l'image et ensuite le modifier in situ.
paintComponent()
avec l'ancienne image à la place de la nouvelle?