LINUX.ORG.RU

Написал свой просмотрщик изображений на python

 , , ,


0

2

Всем привет!

С месяц назад обращался на форум - искал смотрелку картинок с инстструментом «лупа», похожим на подобный в программе FastStone. Товарищи предлагали разные варианты, но того, что мне нужно не было. Давно такую программку искал, перепробовал целую кучу хороших поделок и не очень - подобной особенности не обнаружил. Решил, что надо написать свою.

mopyqtiv - это приспособленный под управление мышкой просмотрщик изображений. Написан на python, с использованием библиотек PyQt пятой серии и PIL. Из особенностей:

  • управление масштабом
  • картинки листаются колёсиком мыши (довольно быстро, без эффектов)
  • вращение картинки (только для просмотра)
  • поворот изображений по 90 градусов влево/вправо (изменения тут же сохраняются на диске)
  • привязка папок на клавиши латинского алфавита для быстрой ручной сортировки
  • миниатюры справа: создаются со впечатляющей скоростью на многокристальных процессорах
  • изменение размеров окна приводит к пропорциональному изменению размеров всех элементов
  • отправка файлов в коризину
  • настройка через правку переменных в заголовке скрипта
  • программа на русском и с русским руководством
  • для арчика есть PKGBUILD

Из того, что хочу добавить/изменить (не сегодня/завтра):

  • отвалилось управление стрелками (было, не знаю куда делось: может быть только у меня)
  • диалог переименовывания файла
  • добавление на мышку управления: масштаб - правая+колёсико, вращение - правая+левая+колёсико
  • исправление ошибок, если кто заметит и сообщит

В общем делал для себя. Кто хочет - пользуйтесь и помогайте добрым советом.

»»» Исходники (Github)

★★

Колор менеджмент, lanczos фильтры? Если это есть, то весьма конкурентоспособно вышло. Отрисовка через opengl? Софтовая будет тормозить жёстко.

anonymous ()
Ответ на: комментарий от anonymous

А, ещё можно хоткеи для всего. Захочешь ещё идей, обращайся. Но углы и быстрая навигация это точно маст хэв.

anonymous ()
Ответ на: комментарий от rmu

Ну типа можно файл ПЕРЕМЕСТИТЬ куда-то прямо из приложения, или СОЗДАТЬ СИМЛИНК где-то. Типа сортировка. Gwenview же это и умеет вроде.

Ну ещё там редактор тегов, EXIF и прочее можно.

anonymous ()

Не, будет круто, если всё это появится. Даром что питон.

anonymous ()
Ответ на: комментарий от anonymous

Захочешь ещё идей, обращайся.

А вот идеи - это то, что мне не интересно. Закладываю то, чем сам пользуюсь.

И сделай миниатюры таки слева

Не хочу, справа лучше

и активные углы в фуллскрине

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

rmu ★★ ()
Ответ на: комментарий от anonymous

Тогда... Конкурентных преимуществ нет. Увы.

Не для этого делал, писал для себя

rmu ★★ ()
Ответ на: комментарий от anonymous

Назначаемые пользователем хоткеи. Возьми КДЕ за образец.

Это же питончик - подправить под свои нужды - довольно просто. Если человеку интересно - сам подправит.

rmu ★★ ()
Ответ на: комментарий от rmu

3/4 кода не несущие смысла комментарии. Ну ок. Комментарии писать наверное интересней, чем код.

anonymous ()
Ответ на: комментарий от anonymous

3/4 кода не несущие смысла комментарии. Ну ок.

Я не специалист, любитель. Коментарии писал больше для себя и для тех, кто хочет понять логику работы и подправить под себя. Если можешь написать что-то поумней - только приветствуется

rmu ★★ ()

Помню твой тред. У меня тоже есть смотрелка изображений на питоне, но код предыдущей версии я потерял, так и не оформив его для пользователей(много вещей настраивалось только через конфиг и т.п.). А новая версия совсем сырая и ещё больше захардкоженная.

pawnhearts ★★★★★ ()
Ответ на: комментарий от rmu

0. Комментарии в коде, если они и есть, должны быть на английском языке.

1. Комментарии не должны описывать «что» и «как» происходит, это должно быть понятно из самого кода. Если по взгляду на код не становится понятно что и как он делает — это говнокод.

2. Комментарии должны рассказывать «зачем» и «почему таким образом» код делает своё дело.

666. Чтобы понять логику программы — нарисуй схему её работы. Вычитывать код — самый дурацкий способ в чём-либо разобраться.

768. Научись в локализации.

1024. Тесты гиде?

Goury ★★★★★ ()
if name[-4:].lower() in self.available_extensions

Ошибка? ".jpeg" уже не подойдет.

У себя использую такой костыль

ext = filename.split('.')[-1:][0]

MLP_Fan ★★ ()
Ответ на: комментарий от pawnhearts

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

MLP_Fan ★★ ()
Ответ на: комментарий от pawnhearts

Вообще есть magic, для определения типов файлов вместо расширений.

Я думал её использовать, но не захотел увеличивать число зависимостей

rmu ★★ ()
Ответ на: комментарий от pawnhearts

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

anonymous ()
Ответ на: комментарий от rmu

Тогда рисуй схемы и попроси кого-нибудь перевести код.

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

Goury ★★★★★ ()
Ответ на: комментарий от anonymous

разумнее использовать фильтрацию

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

rmu ★★ ()
Последнее исправление: rmu (всего исправлений: 1)

У меня поиск лагает или в классе MiniaturesFolderHandler функции random_name и update_folder_name используются 1 раз и можно в __init__ сразу писать

self.folder = '/tmp/mopyqtiv.' + hashlib.sha1(os.urandom(8)).hexdigest()[:8]

MLP_Fan ★★ ()
Ответ на: комментарий от Goury

пилю для себя и на ваши реквесты насрать

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

rmu ★★ ()

настройка через правку переменных в заголовке скрипта

Было бы удобнее настраивать через аргументы командной строки или конфиг-файлы.

grazor ()
Ответ на: комментарий от Goury

А вообще приятно, когда дельные советы дают: меня зацепила идея на оупенгл перенести, и фильтр Ланцоша, как я понял, вещь нужная

rmu ★★ ()
Ответ на: комментарий от grazor

Было бы удобнее настраивать через аргументы командной строки или конфиг-файлы.

Может быть. Тогда и папки для сортировки можно туда закрепить, чтоб не настраивать каждую сессию.

rmu ★★ ()
Ответ на: комментарий от Lavos

папки папки папки папки

Я долго оффтопиком пользовался, считайте меня от части инвалидом. Менять папки на директории и прочие шило-на-мыльные термины мне уже не просто.

rmu ★★ ()
Ответ на: комментарий от pawnhearts

Так-то да, но не кроссплатформенно же. Придётся держать несколько лишних веток.

anonymous ()
Ответ на: комментарий от anonymous

Что значит «куда»

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

rmu ★★ ()
Ответ на: комментарий от rmu

конфиг положить

Куда уже ответили, добавлю только, что возможность указать путь к другому конфигу через что-то вроде --config=/home/... никогда лишней не будет.

grazor ()
Ответ на: комментарий от Goury

Надо пересмотреть политику.

Вести проект с запросом фич мне не просто: я не профессионал, опыта, как делать это грамотно у меня нет. Если с кем-то делать, кто понимает что да как, так интереснее, да и ошибок меньше будет.

rmu ★★ ()
Ответ на: комментарий от Goury

Ошибки исправить, узнать интересные идеи, ради которых стоит развивать. Да и вообще делюсь своими наработками.

rmu ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.