class PromoPhotosHandler(tornado.web.RequestHandler):
def get(self, id):
if not id :
id = "Не найден"
file = Promos.get_photo(id)
#fileData = file.getValue()
self.set_header('Content-type', 'image/png')
self.set_header('Content-length', len(file))
self.write(file)
class Promos(object) :
@staticmethod
def get_photo(id) :
text1 = u"%s" % (settings['text']['text'])
reqCheck = requests.get('http://localhost/hsclients/hs/clients/checkpromo/?id='+id)
print ("%s" % (reqCheck.text))
#img = Image.new('RGBA', settings['pic']['size'], settings['pic']['bg_col'])
img = Image.open(settings['pic']['src'])
d = ImageDraw.Draw(img)
if reqCheck.text.find('Не найден!') >= 0 :
# 1) return picture with text on it
#text = u"%s" % (settings['not_found']['text'])
#font = ImageFont.truetype(settings['not_found']['font'], settings['not_found']['size'], encoding='unic')
#d.text(settings['not_found']['pos'], text, fill=settings['not_found']['col'], font=font)
img = Image.open(settings['not_found']['pic'])
else :
text2 = u"%s" % (reqCheck.text)
font1 = ImageFont.truetype(settings['text']['font'], settings['text']['size'], encoding='unic')
font2 = ImageFont.truetype(settings['code']['font'], settings['code']['size'], encoding='unic')
d.text(settings['text']['pos'], text1, fill=settings['text']['col'], font=font1)
d.text(settings['code']['pos'], text2, fill=settings['code']['col'], font=font2)
#img.save(response, "png")
return img
Суть - при обращении к УРЛ дергаю хттп-сервис 1Ски (не суть), оттуда строку печатаю шрифтом на заранее подготовленной картинке. Потом эту картинку нужно вернуть клиенту в браузер.
Не пойму, почему не работает. Говорит, что размер отдаваемых клиенту данных не соответствует установленному в заголовках.
Гуглил, пробовал разные варианты отдачи картинки.
Хелп.