Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Как подключить к сайту динамическое изображение? [RSS Feed]

#1 Авг. 16, 2012 19:27:48

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Как подключить к сайту динамическое изображение?

Я новичок в питоне, пока знаний и практики совсем мало, так что не пинайте. Подскажите направление, как примерно реализовать такую вещь. Есть (вернее будет) на хостинге скрипт на питоне, он будет динамически генерировать картинку постоянного размера. Как писать на питоне такой скрипт, я уже примерно представляю, вопрос у меня в другом: как сделать, чтобы при запросе по URL вроде

http://адрес_сайта.ru/dir/123456
подключался и срабатывал мой питоновый скрипт? Скрипт будет принимать цифры из URL в качестве параметра и в засисимости от их значений выдавать картинку. Спасибо.

Офлайн

#2 Авг. 16, 2012 20:24:01

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Как подключить к сайту динамическое изображение?

Посмотрите на flask.



Офлайн

#3 Авг. 17, 2012 00:09:10

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Как подключить к сайту динамическое изображение?

http://pypi.python.org/pypi/bottle/
хотя и на flask будет очень похоже

#! /usr/bin/env python
# -*- coding: utf-8 -*-
from bottle import route, run, debug, HTTPResponse
from PIL import ImageFont, Image, ImageDraw
from cStringIO import StringIO
#
BG_COLOR = (255, 192, 203)
debug(True)  # bottle debug mode
FONT = ImageFont.truetype('verdana.ttf', 70)
#
#
@route('/')
@route('/:param')
def index(param='World'):
    return 'Hello/' + param
#
#
@route('/nums/')
@route('/nums/<num:int>')
def nums(num=42):
    img_text = Image.new('RGBA', (200, 200), BG_COLOR)
    draw = ImageDraw.Draw(img_text)
    draw.text((0, 0), str(num), fill=(0, 0xff, 0), font=FONT)
    img_text = img_text.rotate(45, expand=True)
    img_file = StringIO()
    img_text.save(img_file, 'PNG', optimize=True)
    body = img_file.getvalue()
    return HTTPResponse(body, header={'Content-Type': 'image/png'})
#
run(host='localhost', port=8000, reloader=True)

Отредактировано EBFE (Авг. 17, 2012 01:29:02)

Офлайн

#4 Авг. 17, 2012 19:19:34

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Как подключить к сайту динамическое изображение?

fata1ex, EBFE, спасибо за интересные предложения. Вы мне просто открыли глаза, а то я по старым своим стереотипам полагал, что придется делать через .htaccess и mod_rewrite, направляя на скрипт и передавая ему параметры. А всё оказывается значительно интереснее, чем думал, теперь будет материал для пережевывания.

P.S. если возникнут ещё какие-то мысли по сабжу, буду рад если поделитесь.

Отредактировано digi (Авг. 17, 2012 19:20:42)

Офлайн

#5 Авг. 17, 2012 23:40:50

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Как подключить к сайту динамическое изображение?

@route('/nums/<num:int>')
это регулярка ?

Офлайн

#6 Авг. 18, 2012 00:14:46

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Как подключить к сайту динамическое изображение?

это регулярка ?
А что, похоже?
http://flask.pocoo.org/docs/quickstart/#routing
http://bottlepy.org/docs/dev/routing.html#wildcard-filters


По теме:
не забыть убрать
debug(True)  # bottle debug mode

ну и прикрутить к чему-то “серьезному” все таки придется
Bottle runs on the built-in wsgiref WSGIServer by default. This non-threading HTTP server is perfectly fine for development and early production, but may become a performance bottleneck when server load increases.
Тут все неплохо описанно:
http://bottlepy.org/docs/dev/deployment.html

Отредактировано EBFE (Авг. 18, 2012 00:28:22)

Офлайн

#7 Сен. 3, 2012 19:36:01

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Как подключить к сайту динамическое изображение?

Еще подскажите насчет вывода динамического изображения. Изображение будет представлять собой некое число, динамически формируемое. Это число состоит из разрядов, каждый из которых является цифрой, выводимой на небольшом фоновом изображении.

Вопрос: как эффективней поступить:

1. в процессе вывода картинки заново отрисовывать каждый разряд и складывать из них изображение
или
2. вид каждой цифры на фоне сохранить в отдельный файл, и затем при выдаче общего изображения просто формировать общую картинку, считывая каждый разряд из соответствующего файла с сохраненным изображением цифры

Может знатокам этот вопрос и покажется очевидным, прошу не пинать.

Офлайн

  • Начало
  • » Web
  • » Как подключить к сайту динамическое изображение?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version