Ajouter du Texte sur l'Image à l'aide de PIL
J'ai une application qui charge une Image et lorsque l'utilisateur clique dessus, une zone de texte s'affiche pour cette Image (à l'aide de jquery
), où l'utilisateur peut écrire un texte sur l'Image. Ce qui devrait être ajouté à l'Image.
Après avoir fait quelques recherches, j'ai pensé que PIL
(Python Imaging Library ) peut m'aider à le faire. J'ai donc essayé quelques exemples pour voir comment il fonctionne et j'ai réussi à écrire un texte sur une image. Mais je pense qu'il ya une différence quand je l'ai essayer en utilisant Python Shell
et dans l'environnement web. Je veux dire le texte sur le textarea est très grand en px. Comment puis-je atteindre la même taille de texte lors de l'utilisation de la LIP sur le textarea?
Le texte Multiligne. Comment puis-je le faire à plusieurs lignes dans l'image, à l'aide de PIL
?
Est-il un meilleur moyen que d'utiliser PIL? Je ne suis pas entièrement sûr, Si c'est la meilleure mise en œuvre.
html:
<img src="images/test.jpg"/>
son à l'image en cours d'édition
var count = 0;
$('textarea').autogrow();
$('img').click(function(){
count = count + 1;
if (count > 1){
$(this).after('<textarea />');
$('textarea').focus();
}
});
le jquery pour ajouter le composant textarea.
Aussi la zone de texte est en position:absolute et de taille fixe.
Dois-je le placer à l'intérieur d'un formulaire afin que je puisse obtenir les coordonnées de textarea sur l'image?
Je veux écrire du texte sur l'image lorsque l'utilisateur clique et l'enregistrer sur l'image.
- Pourquoi vous voulez écrire du texte sur une Image à l'aide de PIL (et je ne suis Pas sûr si PIL aide dans que). N'est-il pas assez bon pour vous pour afficher le texte en superposition, qui est utilisé le plus couramment dans les curseurs.
- J'en ai besoin pour un projet que je veux l'image à enregistrer. Pil peuvent dessiner du texte sur une image à l'aide de ImageDraw, je ne sais pas si il existe une autre manière.
- Il sera utile, Si vous pouvez fournir le code Python que vous utilisez?
- pas encore mis en œuvre dans django. J'ai essayé de voir comment PIL œuvres interactives console python. Vous voulez voir si il fonctionne d'abord et ensuite le transférer dans Django.
- Quel est le symbole $ dans votre code?
Vous devez vous connecter pour publier un commentaire.
Je pense que ImageFont module disponible dans
PIL
devrait être utile dans la résolution de problème de taille de police du texte. Il suffit de cocher le type de police et la taille est appropriée pour vous et utiliser la fonction suivante pour changer la police de valeurs.De sorte que votre code devrait ressembler à quelque chose de similaire à:
Vous pourriez avoir besoin de mettre des efforts supplémentaires pour calculer la taille de la police. Dans le cas où vous voulez le changer, basé sur la quantité de texte que l'utilisateur a fournies dans
TextArea
.Pour ajouter de l'habillage de texte (Multiline chose) il suffit de prendre une idée approximative de combien de caractères peut venir dans une ligne, Alors vous pouvez probablement écrire un pré-pprocessing fonction de votre Texte, Qui trouve essentiellement le personnage qui sera le dernier de chaque ligne et la convertit en un espace blanc avant ce caractère de nouvelle ligne.
self.font = core.getfont(file, size, index, encoding) IOError: cannot open resource
. Comment puis-je fournir le chemin du fichier de police?pip install pillow
pour exécuter ce code avec Python 2.7 (pypi.org/project/Pillow).Vous pouvez créer un répertoire "fonts" dans la racine de votre projet et de mettre vos polices (sans_serif.ttf) fichier. Ensuite, vous pouvez faire quelque chose comme ceci:
Encore plus minime exemple (dessine "Hello world!" dans le noir et avec la police par défaut en haut à gauche de l'image):
Tout d'abord, vous devez télécharger un type de police...par exemple: https://www.wfonts.com/font/microsoft-sans-serif.
Après cela, utilisez ce code pour dessiner le texte:
Avec Oreiller, vous pouvez également dessiner sur une image à l'aide de la ImageDraw module. Vous pouvez dessiner des lignes, des points, des ellipses, rectangles, arcs, des images, des accords, pieslices, des polygones, des formes et du texte.
nous créer une Image de l'objet avec la méthode new (). Cela renvoie une Image de l'objet avec aucune image chargée. Nous ajoutons ensuite un rectangle et du texte à l'image avant de l'enregistrer.