programing

Django를 사용하여 동적으로 생성된 이미지 제공

telecom 2023. 8. 18. 20:52
반응형

Django를 사용하여 동적으로 생성된 이미지 제공

장고에서 동적으로 생성된 이미지를 제공하려면 어떻게 해야 합니까?

html 태그가 있습니다.

<html>
...
    <img src="images/dynamic_chart.png" />
...
</html>

이 요청 처리기에 연결되어 메모리 내 이미지를 만듭니다.

def chart(request):
    img = Image.new("RGB", (300,300), "#FFFFFF")
    data = [(i,randint(100,200)) for i in range(0,300,10)]
    draw = ImageDraw.Draw(img)
    draw.polygon(data, fill="#000000")
    # now what?
    return HttpResponse(output)

또한 AJAX에 대한 요청을 변경하고 일종의 캐싱 메커니즘을 추가할 계획이지만, 솔루션의 이 부분에는 영향을 미치지 않을 것으로 알고 있습니다.

PIL(Python Imaging Library)을 사용하시는 것 같습니다.마지막 줄을 다음으로 바꿔야 합니다(예: PNG 이미지를 제공하려는 경우).

response = HttpResponse(mimetype="image/png")
img.save(response, "PNG")
return response

자세한 내용은 여기를 참조하십시오.

저는 장고가 비교적 생소합니다.장고 자체에서 아무것도 찾을 수 없었지만 Google Code에서 귀하에게 도움이 될 수 있는 프로젝트를 우연히 발견했습니다.

장고-다이내믹-미디어-디바이스

저는 같은 문제의 해결책을 찾고 있었습니다.

그리고 저에게는 이 간단한 접근법이 잘 작동했습니다.

from django.http import FileResponse

def dyn_view(request):

    response = FileResponse(open("image.png","rb"))
    return response

다른 방법은 바이트를 사용하는 것입니다.IO. 바이트IO는 버퍼와 같습니다.따라서 이미지를 해당 버퍼에 저장할 수 있습니다(디스크에 쓰는 것보다 충분히 빠름).

from PIL import Image, ImageDraw
import io

def chart(request):
    img = Image.new('RGB', (240, 240), color=(250,160,170))
    draw = ImageDraw.Draw(img)
    draw.text((20, 40), 'some_text')

    buff = io.BytesIO()
    img.save(buff, 'jpeg')
    return HttpResponse(buff.getvalue(), content_type='image/jpeg')

언급URL : https://stackoverflow.com/questions/1074200/serve-a-dynamically-generated-image-with-django

반응형