Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Простейшее рисование с помощью PIL

Python
Недавно потребовалось мне создавать картинку на лету. Решил спользовать библиотеку для питона PIL. Она поддерживает кучу форматов, а также множество цветовых систем (RGB, RGBA и более простые). Итак, рассмотрим простейшее, как создать рисунок и что-либо на нем нарисовать.
Читать дальше →
Всего голосов 58: ↑50 и ↓8 +42
Просмотры51K
Комментарии 24

Сортировка изображений по разрешению с помощью Python и PIL

Python
image

Захотелось зарегистрироваться на Хабре, но так как знаниями особо не блещу, а аудитория тут как раз наоборот, решил попробовать выложить скрипт на питоне, который написал по просьбе знакомого за бутылку 7апа :) Мне скриптик так же помог упорядочить свалку картинок ~15гб.

Скрипт проходит по директории и создает в ней папки вида ШиринахВысота и пихает туда соответствующие по разрешению изображения.

P.S. Ошибок не совершает тот, кто ничего не делает.

Читать дальше
Всего голосов 63: ↑49 и ↓14 +35
Просмотры5K
Комментарии 34

Tilt-Shift фотографии своими руками

PythonОбработка изображений
Что такое Tilt-Shift объективы и что с их помощью можно сделать знают многие. Недавно на хабре была статья о Tilt-Shift генераторе, который создает этот эффект путем обработки обычной фотографии. Но программка эта написана только для Windows, да еще и платить за нее надо. Все плагины для графических редакторов почему-то тоже требовали денег и лицензий. Поэтому было принято решение с этим вопросом разобраться самостоятельно и сделать инструмент пусть немного проще профессионального софта, и не идеально симулирующий оптику объектива, но бесплатный, открытый и доступный всем желающим! Что из этого получилось, а что нет — можете посмотреть сами.
Всех заинтересовавшихся прошу под кат. Текст, код, картинки.
Всего голосов 107: ↑91 и ↓16 +75
Просмотры66.3K
Комментарии 60

Определение доминирующих цветов: Python и метод k-средних

PythonАлгоритмы

Assorium

На Хабре публиковалось несколько статей с алгоритмами и скриптами для выбора доминирующих цветов на изображении: 1, 2, 3. В комментариях к тем статьям можно найти ссылки ещё на десяток подобных программ и сервисов. Но нет предела совершенству — и почему бы не рассмотреть способ, который кажется самым оптимальным? Речь идёт об использовании кластеризации методом k-средних (k-means).
Читать дальше →
Всего голосов 59: ↑54 и ↓5 +49
Просмотры32.7K
Комментарии 17

Установка Python Image Library (PIL) в x64 системы на примере CentOS

SouthbridgePythonDjango
Когда разработчики требуют множество python и django различных версий на одном хосте на помощь приходит
virtualenv…

Но после этого доустанавливать дополнительные модули для каждого python приходится руками через pip

И тут возникают нюансы. Например с библиотекой PIL

Она прекрасно устанавливается, но при попытке работы с ней выдает вот такие великолепные сообщения об ошибках

decoder jpeg not available

Проблема в том, что при сборке PIL не может библиотеки для работы с jpeg, zlib, tiff, freetype, потому что в нашем случае они лежат в /usr/lib64, а в PIL написано искать только в /usr/local/lib

Читать дальше →
Всего голосов 10: ↑3 и ↓7 -4
Просмотры9.5K
Комментарии 7

Пишем бота для игры «Найди отличие»

Python

Не так давно я наткнулся на игру, в которую играл много лет назад. Я думаю, многие при поиске отличий ломали себе глаза долгое время. Сегодня я решил пройти её еще раз, но проходить её с 0 мне было, честно говоря, лень. Поэтому я решил написать себе помощника. В статье будет рассказано одно из решений, не наилучшее, но самое понятное для новичков. Итак, начнем.

Писал я всё на python 2.7
Использовалась библиотека PIL

from PIL import Image, ImageDraw


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

image1 = Image.open("1.jpg")

Так мы открываем нужный нам файл.

pix1 = image1.load()

Записываем в pix1 цвета всех пикселов картинки. Теперь по координате пикселя мы можем получить его цвет.

draw = ImageDraw.Draw(ANS)

Создание инструмента для рисования.

image1.size

Возвращает пару (ширина и высота картинки).

draw.ellipse((x, y), (255, 255, 255)) 

Рисование белой точки по заданным координатам.

ANS.save("ans.png", "PNG")

Сохранение изображения в формате PNG. Если не указан полный путь, то сохраняется в папку с исполняемой программой.

del draw

Удаление инструмента «draw».

Приступим к главному…
Читать дальше →
Всего голосов 61: ↑43 и ↓18 +25
Просмотры35.6K
Комментарии 55

Играемся с изображениями в Python

PythonОбработка изображений
Tutorial
В этой статье я хотел бы разобрать различные способы преобразования изображений с помощью Python. Для примеров я решил взять несколько наиболее известных. В статье не будет ничего сложного, она ориентированна в основном на новичков.
Картинка для испытаний:


Читать дальше →
Всего голосов 86: ↑65 и ↓21 +44
Просмотры213.7K
Комментарии 49

История оптимизации alpha_composite в Pillow 2.0

PythonC
Недавно вышла вторая версия питоновской библиотеки для работы с изображениями Pillow. Как многие знают, это форк хорошо известной библиотеки PIL, которая, несмотря на свой солидный возраст, до недавнего времени оставалась самым вменяемым способом работы с изображениями в Питоне. Авторы Pillow наконец-то решили не только поддерживать старый код, но и добавлять новые возможности. И одной из этих возможностей стала функция alpha_composite().

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

С тех пор я уже смог написать для своих нужд более оптимальную реализацию, чем приведена в конце той статьи. И оказалось, что эта реализация быстрее alpha_composite() из новой версии Pillow, написанной на Си. Конечно, мне это польстило, но я все-таки решил попытаться улучшить реализацию из Pillow.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры5.3K
Комментарии 11

Django: Использование QR-кодов для быстрого входа на сайт с мобильных устройств

Разработка веб-сайтовPythonDjango
Tutorial
Если у вас есть сайт, которым часто пользуются с мобильных устройств (таких как телефоны и планшетные ПК), то вы, возможно, задавались вопросом, как реализовать быстрый вход — так, чтобы пользователю не требовалось вводить ни адрес сайта, ни логин и пароль (либо E-mail и пароль).

На некоторых сайтах вы, возможно, видели возможность отправить SMS-сообщение со ссылкой для быстрого входа — это, по сути, приблизительно то же самое. Основное отличие описанного в данной заметке подхода в том, что вместо отправки SMS-сообщения мы будем генерировать QR-код, который содержит ссылку, позволяющую войти на сайт без ввода авторизационных данных.

Скриншот с экрана мобильного телефона

Кстати, весь процесс написания приложения, которое приводится далее, можно посмотреть в скринкасте (есть на YouTube, либо в более хорошем качестве в виде файла MPEG2 в 1080p).
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Просмотры18.4K
Комментарии 11

Стойкое шифрование данных в PNG

КриптографияOpen sourcePythonОбработка изображенийСжатие данных
Доброго утра Хабру. Читал вчера статью о хэш-стеганографии через социальные сети, и пришла мне в голову мысль сделать что-то более оптимальное в плане объёма выходных данных. Получилось что-то более-менее работоспособное и даже оптимизированное (в отличие от proof-of-concept romabibi), поэтому, как и обещал, пишу статью.

Что ж, поздороваюсь с вами ещё раз: , и добро пожаловать под кат.
Поехали!
Всего голосов 27: ↑18 и ↓9 +9
Просмотры9.5K
Комментарии 24

PIL на Python от простого к сложному

PythonОбработка изображений
Из песочницы
Чтобы дойти до сложных алгоритмов обработки, стоит проанализировать стандартные схемы, с чего я и предлагаю начать.

Для примеров обработки будет использоваться изображение с различным наборов цветов:

image

Для старта нам потребуется два модуля библиотеки:

from PIL import Image, ImageDraw 

Настроим инструменты для комфортной дальнейшей работы:

image = Image.open('test.jpg')  # Открываем изображение
draw = ImageDraw.Draw(image)  # Создаем инструмент для рисования
width = image.size[0]  # Определяем ширину
height = image.size[1]  # Определяем высоту
pix = image.load()  # Выгружаем значения пикселей

Приступим


Обрабатывать изображения будем в формате RGB. Также PIL поддерживает работу с форматами 1, L, P, RGB, RGBA, CMYK, YCbCr, LAB, HSV, I, F.
Читать дальше →
Всего голосов 26: ↑16 и ↓10 +6
Просмотры46.4K
Комментарии 25

Печать гобелена «Игры престолов» на фискальном принтере с использованием Python

Python
Tutorial
Однажды в одном из проектов в мои руки попал фискальный принтер. Мы каждый день сталкиваемся с этими устройствами, когда совершаем платежи в магазинах, но мало кто догадывается что на самом деле они из себя представляют. Не буду вдаваться в подробности их работы, просто скажу, что это такие штучки, которые печатают чеки с данными о покупке на специальной термобумаге (да-да, почти во всех фискальных принтерах нет чернил!).

Я должен был разобраться как получить состояние функционирования фискального принтера и его внутренние параметры настройки. Задача давно выполнена, а фискальный принтер был надолго заброшен в дальний угол… Пока в мою голову не пришла идея немного покреативить :D

Такие принтеры позволяют печатать монохромные картинки. Когда я вдоволь наигрался с печатью котиков, эмблем и фотографий коллег, я решил замахнуться на печать длинного гобелена по мотивам сериала, в котором постоянно кого-то убивали со словами «зима близко».

На выходе получился вот такой ролик:


Подробные действия для печати гобелена на языке python под катом ниже.
Читать дальше →
Всего голосов 36: ↑36 и ↓0 +36
Просмотры9.3K
Комментарии 27

Кодировки, шифр сдвига, брут хешей и создание картинки с помощью PIL python. Решение задач с r0от-мi Cryto. Часть 1

Информационная безопасностьPythonCTF
Tutorial
image

Данная статья содержит решений заданий Encoding ASCII и Encoding UU направленные на кодировки, Hash Message Digest 5 и Hash SHA-2 — на нахождение прообраза хеша, Shift cipher — шифр сдвига, и Pixel Madness — на составление картинки.

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры5K
Комментарии 0