
Dmitry
08.06.2017
16:40:13
why not pillow ?

Dmitry
08.06.2017
16:41:06
Если шрифты, то я бы не стал, просто потому что я никогда со шрифтами не работал, а по моему опыту, то что не починено, то скорее всего сломано
спасибо. А есть идеи что взять вместо PIL тогда?

Google

Dmitry
08.06.2017
16:41:40
Тут же вроде не нужно большой производительности. Возьми wand
Но помни про освобождение ресурсов )

Olya
08.06.2017
16:53:12
После майнкрафта я надеюсь все-таки как-нибудь еще раз выступить и рассказать про OpenCV

Dmitry
08.06.2017
16:53:26
мы очень за =)

Olya
08.06.2017
16:53:43
Мы все порадуемся, узнаем новое. Но переписывать все равно уже не станем, ибо все готовое уже, работает и хорошо :)

Dmitry
08.06.2017
16:53:48
скажу по секрету, нам в некоторое ближайшее время начнёт требоваться больше докладов в единицу времени, чем сейчас

Sergey
08.06.2017
16:54:22
>429 members
>скажу по секрету

Dmitry
08.06.2017
16:54:35
that's the joke

Nikolay
08.06.2017
16:54:58

Dmitry
08.06.2017
16:56:19
Мейнтейнер pillow не рекомендовал :)
# -*- coding: utf-8 -*-
from __future__ import (
absolute_import, division, print_function, unicode_literals
)
import requests
from PIL import Image, ImageFont, ImageDraw
size = (800, 300)
color = '#C1392B'
font_color = '#E1E0DD'
def create_image():
return Image.new(mode='RGB', size=size, color=color)
def load_font(font_size):
return ImageFont.truetype('CaviarDreams.ttf', size=font_size)
def draw_text(im, pos, text, font_size=50):
draw = ImageDraw.Draw(im)
draw.text(pos, text, font=load_font(font_size=font_size))
def hello_world():
image = create_image()
draw_text(image, (50, 50), 'Hello world!', 50)
draw_text(image, (50, 100), 'Привет, мир!', 50)
image.save('hello_world.png', format='PNG')
if __name__ == '__main__':
hello_world()


Nikolay
08.06.2017
16:56:58
# -*- coding: utf-8 -*-
from __future__ import (
absolute_import, division, print_function, unicode_literals
)
import requests
from PIL import Image, ImageFont, ImageDraw
size = (800, 300)
color = '#C1392B'
font_color = '#E1E0DD'
def create_image():
return Image.new(mode='RGB', size=size, color=color)
def load_font(font_size):
return ImageFont.truetype('CaviarDreams.ttf', size=font_size)
def draw_text(im, pos, text, font_size=50):
draw = ImageDraw.Draw(im)
draw.text(pos, text, font=load_font(font_size=font_size))
def hello_world():
image = create_image()
draw_text(image, (50, 50), 'Hello world!', 50)
draw_text(image, (50, 100), 'Привет, мир!', 50)
image.save('hello_world.png', format='PNG')
if __name__ == '__main__':
hello_world()
Хорошее название шрифта

Dmitry
08.06.2017
16:57:06
ну и нафига, ёпрст :) ты бы лучше в существующей репе позакрывал ишью

Google

Dmitry
08.06.2017
16:57:18
Я взял тот шрифт из проги:)
Переписать на PIL ?)

Dmitry
08.06.2017
16:57:44
зачем о_0 оно ж работает
на pillow*

Dmitry
08.06.2017
16:58:03
Просто для wand надо libmagickwand-dev ставить

Dmitry
08.06.2017
16:59:02

Dmitry
08.06.2017
16:59:49
Короче если есть энергия дизайн лучше прокачать
а менять одну либу на другую смысла мало, учитывая что результат будет один
(я так мыслю)

Nikolay
08.06.2017
17:01:16
Он приятнее

Olya
08.06.2017
17:02:56
А расскажи по секрету, зачем больше докладов. Вроде все нормально общаются в текущем режиме :)

Dmitry
08.06.2017
17:03:27
потом расскажу. :)
потизерил и хватит
есичо, у нас есть уютный твиттер, куда мы кладём фоточки, цитаты и анонсы :) фолловьте https://twitter.com/spbpython

Dmitry
08.06.2017
21:27:15
@nazarov_tech а можно права на пуш веток и оформление пулл-реквестов?)
(я про https://github.com/spbpython/kdpv_generator )

Dmitry
08.06.2017
21:28:37
а нету? о_0
@delimitry @nonamenix гляньте кто будет у машины

Dmitry
08.06.2017
21:29:02
неа, не могу пушнуть

Google

Dmitry
08.06.2017
21:29:28
я чуть-чуть отрефакторил код:)
теперь чуть-проще будет добавить всякие штуки типа "закруглостей" и тд
(наверно проще)

Vanya
08.06.2017
21:32:19
http://get.nimses.com/Il9L/KgnEnMjVOD

Dmitry
08.06.2017
21:37:18
Ладно, форкнул и сделал PR
https://github.com/spbpython/kdpv_generator/pull/4
Основное изменение: теперь вся картинка описывается в yaml файле и генератор генерирует из нее.
Зато сразу есть поддержка локальных/удаленных картинок:)
Ну и переписал на Pillow :)
И легко можно реализовать остальные формы рисования (сейчас линия/квадрат/текст/картинка)
(а еще так прикольно явно указывать типы в питоне ?)

Sergey
08.06.2017
21:57:57
Ну и f-строки можно было сразу засунуть туда х)

Dmitry
08.06.2017
22:03:00
либы для работы с изображениями
pillow их использует
wand наверняка их тоже тянет, либо они и так есть:)

Sergey
08.06.2017
22:05:45
Если честно, не вижу вообще сильно смысла в этом файлике. Далеко не все с убунтой живут чтобы xargs apt-get install -y делать.
inb4: кто не живет с убунтой может и руками сделать
Проще ссылку на install гайд дать в документации того же PIL или wand
Но за упорство однозначно респект :D

Dmitry
08.06.2017
22:07:50
ну доку всегда можно поправить:)
может кто подскажет хорошее сравнение изменений между 2.7 и 3+ ?

Sergey
08.06.2017
22:11:50

Sergey
08.06.2017
22:12:12

Dmitry
08.06.2017
22:15:32
это я уже прочитал:)

Sergey
08.06.2017
22:15:35
А еще можно, наверное, в доку future того же глянуть

Google

Eugene
08.06.2017
22:24:46
Я когда-то вот это читал, мне понравилось
http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html
Но тоже устарело.

Sergey
08.06.2017
22:29:27
самый надежный источник https://docs.python.org/3/whatsnew/index.html

Eugene
08.06.2017
22:30:09
Не удобный формат, лучше таблицами и сравнениями.
Когда надо посмотреть "что нового" да, но вот сравнивать 2 и 3 не удобно.

Nikolay
08.06.2017
22:31:36
Вкратце - второй устарел и не нужен

Eugene
08.06.2017
22:32:39

Dmitry
08.06.2017
22:36:22
А слайдики збс, сделаны с юморком:)

Eugene
08.06.2017
22:42:08

Andrey
08.06.2017
22:47:00
второй вариант еще и сообщения об ошибках ломает. too few values to unpack явно хуже function takes n arguments

Sergey
08.06.2017
22:48:45
Небось дальше где-то советуют ловить самому и бросать тоже самому
Зато рефакторинг :)

Stepan
08.06.2017
23:15:13

Denis
09.06.2017
08:12:05
Я не понял одного, а в чём плюс то?

Ilia
09.06.2017
08:28:06
А почему все сразу решили что тут пример сверху вниз надо читать, может быть наоборот просто
Например, если слайд рисовали в южном полушарии

Denis
09.06.2017
08:38:05

Sergey
09.06.2017
08:45:38
Судя по предыдущим слайдам, всё-таки, читать надо сверху вниз

Eugene
09.06.2017
08:47:19
Зато там дальше про keyword only аргументы, и там я уже согласен.

Denis
09.06.2017
08:47:25

Google

Denis
09.06.2017
08:47:59

Michael
09.06.2017
09:01:20
size: tuple - бесполезен по факту, надо указать Tuple[int, int]

Denis
09.06.2017
09:06:04
Вообще должно уже и так спасти от 90% факапов, если рассматривать строгую типизацию как спасение от дурака

Michael
09.06.2017
09:06:24
неа

Denis
09.06.2017
09:06:50
Ну я про случаи, когда вместо массива вернётся инстанс или какой-нибудь буль :)

Michael
09.06.2017
09:06:54
тут проблема в майпай

Dmitry
09.06.2017
09:07:23

Denis
09.06.2017
09:07:52

Eugene
09.06.2017
09:09:07
MyPy или typing?

Denis
09.06.2017
09:09:41
Тайпинг третьего питона то вообще поддерживают, как я понимаю, а вот mypy..

Michael
09.06.2017
09:09:56
Как вариант, это нормально хавает. Но обычно заводят доп алиас на тип SizeType = Tuple[int, int] что то вроде этого /

Denis
09.06.2017
09:12:17
Хм, отстал я от жизни слегка, читнул. Mypy получается тот же тайпинг третьего питона. А в чём разница?

Dmitry
09.06.2017
09:12:32
Pycharm вроде нормально поддерживает тайпинг.
Во 2м питоне я обычно юзаю для этого докстринги
def my_fn(x, y):
"""
:type x: int
:type y: int
:rtype: int
"""

Michael
09.06.2017
09:12:48