반응형
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
반응형
'programing' 카테고리의 다른 글
ASP 설치 및 사용 방법의 NET AJAX 컨트롤 툴킷.NET 3.5 웹 애플리케이션? (0) | 2023.08.18 |
---|---|
스프링카프카 vs.Spring-Cloud-Stream(카프카) (0) | 2023.08.18 |
"#define X X"는 무엇을 의미합니까? (0) | 2023.08.18 |
엑셀이 이해할 수 있도록 날짜 시간을 포맷하는 방법은? (0) | 2023.08.18 |
동일한 쿼리, 다른 결과 (0) | 2023.08.18 |