Tak i nie.
Tak, możesz umieścić obrazy jako surowe dane Base64. Oto mały skrypt, który można przetestować:
import Image
import base64
import StringIO
output = StringIO.StringIO()
im = Image.open("test.png") # Your image here!
im.save(output, format='PNG')
output.seek(0)
output_s = output.read()
b64 = base64.b64encode(output_s)
open("test.html","w+").write('<img src="data:image/png;base64,{0}"/>'.format(b64))
Jest to jednak bardzo zły pomysł. Dzięki wielu miniaturom Twoja pojedyncza strona HTML może mieć 10 MB +.
To, co naprawdę należy robić, to używanie osobnego widoku Django do zwracania obrazów z obiektów PIL jako plików PNG, a następnie odwoływanie się do tego widoku w atrybutach img
href
na twojej stronie.
Czy na pewno chcesz wyświetlić obraz bezpośrednio z procesu Django?Nie tylko zużyje cenną pamięć, ale również utworzy jeden wątek lub przetworzy się –
(bez żadnych mocnych dowodów). Myślę, że znacznie lepiej oszczędzasz obraz i pozwalasz serwerowi front-end wykonać bajt-shuffling dla ciebie. Spójrz na X-Sendfile (Apache) lub X-Accel-Redirect (Nginx). –