Lorsque vous essayez d'ajouter du texte à une image avec Scala, je pense que le moyen le plus simple de l'implémenter est d'utiliser la bibliothèque standard de Java. Donc, fondamentalement, le contenu de l'implémentation est presque le même que Java, mais je vais présenter l'exemple de code avec le site référencé.
Il y en a quelques-uns, mais je vais énumérer les articles auxquels j'ai fait référence.
Il s'agit d'un exemple de code qui ajoute des caractères sur le côté de l'image d'origine et la génère. En disant Scala, je pense que c'est presque la même chose que Java.
ImageWritingWordSample.scala
import java.awt.{Color, Font, RenderingHints}
import java.awt.image.BufferedImage
import java.io.{File, FileOutputStream}
import javax.imageio.{IIOImage, ImageIO, ImageWriteParam}
object ImageWritingWordSample extends App {
//Chargement de l'image originale
val originalImage = ImageIO.read(new File(s"resources/200x50.png "))
//Incorporer l'image d'origine dans la nouvelle image
val newImage = new BufferedImage(320, 50, originalImage.getType)
val graphics = newImage.createGraphics()
graphics.drawImage(originalImage, 0, 0, null)
//Couleur d'arrière-plan où vous écrivez des lettres
graphics.setColor(Color.WHITE)
graphics.fillRect(200, 0, 320, 50)
//Paramètres de police
graphics.setFont(new Font("Arial", Font.PLAIN, 12))
//Couleur de la lettre
graphics.setColor(Color.BLACK)
//Anti crénelage
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON)
//Ajouter des personnages
graphics.drawString("Test de test", 210,20)
graphics.drawString("Test de test", 210,40)
//Sortie d'image
val os = new FileOutputStream("resources/new_320x50.jpeg ")
val ios = ImageIO.createImageOutputStream(os)
val writer = ImageIO.getImageWritersByFormatName("jpeg").next
val param = writer.getDefaultWriteParam
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT)
//Paramètres de qualité d'image
param.setCompressionQuality(1.0f)
writer.setOutput(ios)
writer.write(null, new IIOImage(newImage, null, null), param)
writer.dispose()
}
** 【L'image d'origine】 ** ** [Image après l'ajout de caractères] **