Django template show text to image runtime

mahabub.devs3
Mahabubur Rahman
Published on Feb, 10 2025 2 min read 0 comments
Text Image

To display text as an image in a Django template at runtime, you can use the Python Imaging Library (Pillow) to generate the image and then serve it through a Django view. Here's a step-by-step guide:

Step 1: Install Pillow
First, make sure you have Pillow installed in your environment:

pip install pillow

Step 2: Create a Django View to Generate the Image
Create a view that generates an image with the desired text.

# views.py
from django.http import HttpResponse
from PIL import Image, ImageDraw, ImageFont
import io

def text_to_image(request, text):
    # Create an image with white background
    image = Image.new('RGB', (200, 100), color=(255, 255, 255))
    draw = ImageDraw.Draw(image)
    
    # Load a font
    font = ImageFont.load_default()
    
    # Draw the text
    draw.text((10, 40), text, fill=(0, 0, 0), font=font)
    
    # Save the image to a bytes buffer
    buffer = io.BytesIO()
    image.save(buffer, format='PNG')
    buffer.seek(0)
    
    return HttpResponse(buffer, content_type='image/png')


Step 3: Configure URL Routing
Add a URL pattern to route requests to the view.

# urls.py
from django.urls import path
from .views import text_to_image

urlpatterns = [
    path('text-to-image/<str:text>/', text_to_image, name='text_to_image'),
]


Step 4: Display the Image in a Template
In your Django template, you can now display the generated image by referencing the URL pattern.

 

<!-- template.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Text to Image</title>
</head>
<body>
    <h1>Text to Image Example</h1>
    <img src="{% url 'text_to_image' 'Hello, World!' %}" alt="Text Image">
</body>
</html>


Summary

  1. Install Pillow: Ensure Pillow is installed.
  2. Create View: Write a view to generate the image with text.
  3. Configure URL: Add a URL pattern for the view.
  4. Display in Template: Use the URL in your template to display the image.

This approach dynamically generates an image with the specified text and serves it in your Django application.

0 Comments