Convertir le contenu du texte à l'Image
Est là toute bibliothèque Java qui permet de convertir du texte contenu dans des fichiers image? Je ne sais ImageMagick (JMagick dans ce cas) mais je ne voudrais pas installer de fichiers binaires externes (mon application va être déployée en tant que .la guerre de fichiers dans un serveur Tomcat, donc je ne veux pas d'autres dépendances de plus de Java).
Par exemple, à partir de la chaîne "Bonjour", je tiens à générer cette image simple:
- Voir aussi ces exemples d'utilisation d'un
GlyphVector
comme on le voit dans l'image en forme de texte & Unicode échiquier. Et un exemple de l'habillage du texte à l'aide d'un label.
Vous devez vous connecter pour publier un commentaire.
La Graphiques 2D de l'API doit être capable de réaliser ce que vous avez besoin. Il a un certain complexe de la manipulation de texte des capacités.
Également vérifier L'écriture/l'Épargne et de l'Image
Le code ci-dessus fonctionne très bien pour moi (j'ai changé la couleur du texte à
WHITE
j'ai donc pu le voir dans chrome)J'ai été en utilisant Chrome 70.0.3538.77 sur Mac OS Mojave 10.14 à l'aide de Java 10.0.2. L'image résultante a été 4778x2411 de pixels ...
Mis à jour...
Donc ce que vous me dites est, d'une image PNG transparente est affiché différemment sur différents navigateurs, parce que les navigateurs utilisent différents arrière-plans par défaut ... pourquoi êtes-vous surpris par cette?
La solution originale, délibérément, a utilisé un transparent à base d'image. Cela est évident par l'utilisation de
BufferedImage.TYPE_INT_ARGB
lors de la création de l'image, qui est l'application d'un Alpha (A
) en fonctionRGB
modèle de couleur.Non, en fait, il est tout à fait prévu, si seulement vous l'avez compris ce que
setBackground
ne fait et comment il doit être utiliséDe la La documentation javadoc
De "sons" de choses, vous voulez un non-transparence de l'image, avec un rempli de couleur d'arrière-plan. Donc, encore une fois, il est hors de la La documentation javadoc et un peu de lecture, allait conduire vous aux
BufferedImage.TYPE_INT_RGB
, qui supprime le canal Alpha, mais que vous souhaitez toujours avoir à remplir le fond de l'image.Pour cela, j'utilise
Graphics2D#setColor
etGraphics2D#fillRect
, uniquement parce que cela fonctionne.Donc, vous devez finir avec une version modifiée de la version au-dessus de ce qui pourrait ressembler à quelque chose comme...
Bien, cela est lié à un bien connu, et, malheureusement, commune de problème/bug dans
ImageIO
, qui tente d'appliquer le canal alpha de la couleur de transparence de modèles au format JPG, qui ne prend pas en charge les canaux alpha.Voir Problème à l'aide de ImageIO.écrire le fichier jpg: fond rose pour plus de détails.
Mais la solution de base consiste à utiliser des PNG, qui prend en charge les canaux alpha, ou l'utilisation d'un non-transparence de l'image.
Donc, le long et à court de tout ce qui est. Le problème n'est PAS l'original de la réplique, ni avec
ImageIO
,BufferedImage
,Graphics
, à la bibliothèque AWT, Chrome ou IE, mais avec votre manque de compréhension de la façon dont ces Api (et l'exemple) fonctionne.setColor
. Mais alors vous devrez remplir l'image. Au lieu de cela, vous aurez besoin de définir la page HTML réel de la couleur d'arrière-plan lui-même. Aussi, comme je l'ai dit,ImageIO
a un bug qui, à tort, de modifier la couleur patellate de un JPG si vous essayez de l'enregistrer avec un canal alpha. Cela est connu et commun - vous aurez besoin de changer laBufferedImage
's de type à quelque chose commeTYPE_INT_RGB
- mais vous avez encore jusqu'à la fin avec le noir sur le noir, à moins que vous remplissez l'image vous-même.ImageIO
, AWT ou Chrome, mais votre manque de compréhension du fonctionnement de l'API travailleSans aucune bibliothèque externe, procédez de la manière suivante:
Édition - correction du lien
Considérons le fragment de code suivant:
Utilise seulement le java API Graphique pour créer une image basée sur une police rendus sur un bufferedimage.
Voici un Programme simple pour écrire des contenus Graphiques pour
png
format.ImageWrite
?ImageWriteEx
(la classe définie juste au-dessus). Je l'ai corrigé.Au cas où quelqu'un veut TextImages avec plusieurs lignes. J'ai fait quelques et les afficher avec
dans JOptionPane (sans ajout de texte). Qui remplit toute la JOptionPane bien. Voici le code: