Наджимпил с помощью резинки )))Olej писал(а): 2. где вы взяли ваш schet.png?
Как сделать линейку - календарь?
Правила форума
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
-
- Писатель
- Сообщения: 107
- Зарегистрирован: 23 фев 2012, 14:41
- Откуда: Киев
- Контактная информация:
Re: Как сделать линейку - календарь?
- Вложения
-
- schet.png тут
- schet.png (15.73 КБ) 8158 просмотров
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как сделать линейку - календарь?
Любопытно стало.bose писал(а):Ну собсно сам скрипт прикрепил вместе с результатом работы (на Python). Скрипт рабочий.
Решил проверить ... последнее утверждение
("верить нельзя никому"(с) гаупштурмфюрер Мюллер)
... учитывая, что в README по инсталляции библиотеки не сказано, что выполнять:bose писал(а): Нужно установить только саму библиотеку PIL (http://www.pythonware.com/products/pil/index.htm)
Код: Выделить всё
$ sudo python setup.py install
Ну ладно:
Код: Выделить всё
...
running build_ext
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7 (r27:82500, Sep 16 2010, 18:03:06)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------
...
Writing /usr/lib/python2.7/site-packages/PIL/PIL-1.1.7-py2.7.egg-info
creating /usr/lib/python2.7/site-packages/PIL.pth
Всё равно, скрипту "что в лоб что по-лбу":
Код: Выделить всё
[olej@notebook 29]$ python -v text2image.py test.png 30/1/2010
...
# /usr/lib/python2.7/site-packages/PIL/BmpImagePlugin.pyc matches /usr/lib/python2.7/site-packages/PIL/BmpImagePlugin.py
import PIL.BmpImagePlugin # precompiled from /usr/lib/python2.7/site-packages/PIL/BmpImagePlugin.pyc
# /usr/lib/python2.7/site-packages/PIL/ImageFile.pyc matches /usr/lib/python2.7/site-packages/PIL/ImageFile.py
import PIL.ImageFile # precompiled from /usr/lib/python2.7/site-packages/PIL/ImageFile.pyc
# /usr/lib/python2.7/site-packages/PIL/GifImagePlugin.pyc matches /usr/lib/python2.7/site-packages/PIL/GifImagePlugin.py
import PIL.GifImagePlugin # precompiled from /usr/lib/python2.7/site-packages/PIL/GifImagePlugin.pyc
# /usr/lib/python2.7/site-packages/PIL/JpegImagePlugin.pyc matches /usr/lib/python2.7/site-packages/PIL/JpegImagePlugin.py
import PIL.JpegImagePlugin # precompiled from /usr/lib/python2.7/site-packages/PIL/JpegImagePlugin.pyc
# /usr/lib/python2.7/site-packages/PIL/PpmImagePlugin.pyc matches /usr/lib/python2.7/site-packages/PIL/PpmImagePlugin.py
import PIL.PpmImagePlugin # precompiled from /usr/lib/python2.7/site-packages/PIL/PpmImagePlugin.pyc
# /usr/lib/python2.7/site-packages/PIL/PngImagePlugin.pyc matches /usr/lib/python2.7/site-packages/PIL/PngImagePlugin.py
import PIL.PngImagePlugin # precompiled from /usr/lib/python2.7/site-packages/PIL/PngImagePlugin.pyc
...
P.S. я, правда, не вникал в параметры запуска и что там ему нужно...
Но мой test.png - это скопированный с вашего результата ваш schet.png, только уже с подписями
-
- Писатель
- Сообщения: 107
- Зарегистрирован: 23 фев 2012, 14:41
- Откуда: Киев
- Контактная информация:
Re: Как сделать линейку - календарь?
Питоновые скрипты обычно распространяются через PYPI в пакете (два варианта - distutils или setuptools). Обычно все зависимости прописываются там (setup.py). Затем инсталяторы (типа easy_install) автоматом подтягивают недостающие зависимые пакеты.Olej писал(а): 1. Первое, навскидку, замечание, что когда (наверное?) библиотека PIL ещё не установлена, оно умирает молча, без единого слова, ... как партизан на допросе в гестапо:
В данном случае подобного "удовольствия" нет, тем более я предупредил что нужно доустановить библиотеку. Ну а обойти это можно просто:
Код: Выделить всё
try:
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from PIL import ImageColor
except ImportError,ex:
print >> sys.stderr, "[%s] %s" % (ex.__class__.__name__,str(ex))
print >> sys.stderr, "Download and install library PIL from here http://www.pythonware.com/products/pil/index.htm"
sys.exit(1)
Код: Выделить всё
patch text2image.py -i import.patch
- Вложения
-
- import.zip
- Переименуйте *.zip в *.patch
- (736 байт) 441 скачивание
-
- Писатель
- Сообщения: 107
- Зарегистрирован: 23 фев 2012, 14:41
- Откуда: Киев
- Контактная информация:
Re: Как сделать линейку - календарь?
Олег Иванович, вы кажется стали заложником своего дистрибутива )))Olej писал(а): - стал?
PIL для компиляции требует много зависимостей (как любая другая библиотека работающая с графикой - кодеки, компрессоры, форматы разные и т.п.) Под "форточкой" он кажется идёт с инсталятором в котором есть ВСЁ (
Лучше всего под дистрибутивом установить "родной" пакет ПИЛа... все зависимости должны подтянуться...
Нет возможности проверить, но кажется так:
Код: Выделить всё
yum install python-imaging
-
- Писатель
- Сообщения: 107
- Зарегистрирован: 23 фев 2012, 14:41
- Откуда: Киев
- Контактная информация:
Re: Как сделать линейку - календарь?
В смысле - текст добавлен?Olej писал(а): Но мой test.png - это скопированный с вашего результата ваш schet.png, только уже с подписями
dmitriev писал(а): Мой вопрос, вероятно, плохо сформулирован.
Мне хочется написать скрипт, который будет создавать каждый день новую картинку с новым сроком.
Просто на машине.
Вопрос: Как написать такой скрипт?
Re: Как сделать линейку - календарь?
Не врубился в суть спора программистов.
За скрипт спасибо! Завтра буду разбираться с утра, на свежую голову.
Правда у меня тоже Fedora, как и у Олега.
За скрипт спасибо! Завтра буду разбираться с утра, на свежую голову.
Правда у меня тоже Fedora, как и у Олега.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как сделать линейку - календарь?
Спора никакого нет.dmitriev писал(а):Не врубился в суть спора программистов.
За скрипт спасибо! Завтра буду разбираться с утра, на свежую голову.
Идёт обсуждение как этот скрипт заставить рисовать.
Пока ничего не выходит.
Вот именно поэтому...dmitriev писал(а):Правда у меня тоже Fedora, как и у Олега.
1. пакет рекомендовано (выше) ставить из репозитария дистрибутива, а не по URL проекта.
2. чтоб не гадать я ставил всё что imaging*:
Код: Выделить всё
[root@notebook ~]# yum install python-imaging*
...
Код: Выделить всё
...
Ошибка: Пакет: python-imaging-devel-1.1.7-2.fc14.i686 (fedora)
Необходимо: python-imaging = 1.1.7-2.fc14
Установлено: python-imaging-1.1.7-3.fc14.i686 (@updates-testing)
python-imaging = 1.1.7-3.fc14
Доступно: python-imaging-1.1.7-2.fc14.i686 (fedora)
python-imaging = 1.1.7-2.fc14
...
3. такое же может и у вас приключиться, лечится:
Код: Выделить всё
[root@notebook ~]# yum downgrade python-imaging*
...
Удалено:
python-imaging.i686 0:1.1.7-3.fc14
Установлено:
python-imaging.i686 0:1.1.7-2.fc14
Готово!
Код: Выделить всё
[root@notebook ~]# yum install python-imaging*
...
New leaves:
python-imaging-devel.i686
python-imaging-sane.i686
python-imaging-tk.i686
5. ...
Код: Выделить всё
[olej@notebook 29]$ python text2image.py schet.png 30/1/2012
[olej@notebook 29]$ echo $?
0
- беззвучно (безрисовочно ) завершается и, похоже, завершается без кода ошибки.
Как искать будем?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как сделать линейку - календарь?
Автор нигде не сказал о логике этого демо-приложения, или я невнимательно смотрел и недосмотрел...Olej писал(а): 5. ...Код: Выделить всё
[olej@notebook 29]$ python text2image.py schet.png 30/1/2012 [olej@notebook 29]$ echo $? 0
- беззвучно (безрисовочно ) завершается и, похоже, завершается без кода ошибки.
Как искать будем?
И только когда полез читать исходный код .py программы понял логику работы программы:
- берёт исходное изображение, я чтоб смешнее было, проверил .jpg:
Код: Выделить всё
[olej@notebook 29]$ python text2image.py schet.jpg 20/03/2012
- сохраняет его как файл .phg изображения с фиксированным именем test.png
Тогда всё ОК: P.S. Они таки соответствуют по формату своим расширениям, чтоб не сомневались:
Код: Выделить всё
[olej@notebook 29]$ file schet.jpg
schet.jpg: JPEG image data, JFIF standard 1.01
[olej@notebook 29]$ file test.png
test.png: PNG image data, 399 x 86, 8-bit/color RGB, non-interlaced
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как сделать линейку - календарь?
Ну тогда самое время и дать сравнительный вариант на Perl.bose писал(а): Ну вот сходу на CPAN надыбал перловый модуль со схожим функционалом:
http://search.cpan.org/~lbrocard/Image- ... /Imlib2.pm
-
- Писатель
- Сообщения: 107
- Зарегистрирован: 23 фев 2012, 14:41
- Откуда: Киев
- Контактная информация:
Re: Как сделать линейку - календарь?
Ну да - как мёд так сразу ложкой .Olej писал(а): - беззвучно (безрисовочно ) завершается и, похоже, завершается без кода ошибки.
Как искать будем?
Автор нигде не сказал о логике этого демо-приложения, или я невнимательно смотрел и недосмотрел...
И только когда полез читать исходный код .py программы понял логику работы программы:
Тут конечно много замечаний и путей совершенствования:
1) Автоматизированая обработка параметров коммандной строки при помощи optparse
2) Ну о количестве возможных опций я не стау упоминать (имя выходного файла, цвет и размер шрифта, местоположение текста.....)
3) Контроль длины текста, в случае выхода за границы - обрезать или перенести (пересчитать параметры начала вывода)
4) Автоматизация определения местоположения шрифтов (если не указан явно), выбор кирилическитерпимого шрифта (я в комментариях писал что дефаультный шрифт - не лучший вариант, у меня он не поддерживает кирилицу)
Просто хотел показать что задача тривиальная и не нужно пользоваться какими то спецсредствами.
На что нужно обратить внимание:dmitriev писал(а): За скрипт спасибо! Завтра буду разбираться с утра, на свежую голову.
Правда у меня тоже Fedora, как и у Олега.
1) Функция time_delta - которая определяет сколько времени прошло с одного числа по другое в разрезе день-месяц-год. (Есть небольшая проблема - так как не во всех годах одинаковое кол-во дней и месяц на месяц не похож также). Многие библиотечные функции определяют только разницу в секундах, часах при этом теряется много информации. Тут проблема решается
2) Определение позиции начала выводимого текста на картинке - нужно учитывать длину и высоту шрифта, длину и высоту шаблонной картинки. В случае заступа - текст переносить. Я не всё проконтролировал.
3) Работа с самим шрифтом - у меня дефолтный шрифт кирилицу отазался выводить - пишет кракозяблики. Эксперементировать не стал... Из описания функции мне не совсем понятно какое значение имеет поле fill (почему-то целое от 0 до 255)
Из документации:
http://www.pythonware.com/library/pil/h ... gedraw.htm
Хотя цвет по идее это RGB - что то вроде 0хАА00АА или (255,255,0) (если не брать во внимание прозрачность)The fill option gives the colour to use for the text.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей