LINUX.ORG.RU
ФорумTalks

Unix-way и просмотр изображений


0

0

Много ругаются на неудобные просмотрщики изображений. То им не так, это не то. Падучий, управление неудобное, привязка к DE, тулкит некошерный, форматов знает мало...

А что если сделать по-настоящему хороший просмотрщик?

  1. Предельно простой, чтоб багов было меньше. Пусть знает всего один формат: PNM. А всё остальное пускай декодирует утилитами типа входящих в netpbm и получает через stdin.
  2. Информацию о файлах можно получать, вызывая те же утилиты из netpbm или file.
  3. С 2 мордами на Qt и GTK+ и возможностью лёгкой замены на другие тулкиты. Свести использование функций тулкита к минимуму. Пусть программа передаёт тулкиту:
    1. Содержимое меню (окна и контекстного).
    2. Само изображение-битмап.
    3. Необходимую информацию об изображении: размер, число цветов (или лучше всё гнать в 32 битах, пусть тулкит сам разбирается?), масштаб(?).
    4. Команду открыть диалог открытия файла.
    и получает от тулкита:
    1. Нажатые клавиши.
    2. Выбранные в меню функции.
    3. Сигнал об изменении размера окна, вместе с новыми размерами.
    4. Имя файла из диалога открытия.
  4. Сами морды тоже можно сделать отдельными программами и обмениваться с ними данными через stdin/stdout.
  5. Не знаю, как лучше с масштабированием. Можно осуществлять его внутри программы, средствами тулкита, найти соответствующую функцию в libnetpbm или каждый раз дёргать pamscale. Ещё варианты?
  6. Ещё нужен гуёвый конфигуратор с кучей опций. В GTK-версии, наверное, стоит сделать кнопку «Включить/выключить показ большей части настроек, которая неинтересна большинству пользователей». Хранить настройки в текстовом файле. Все настройки можно менять при запуске из командной строки.
  7. Так как понадобится много парсить stdin, имеет смысл прибегнуть к языку, хорошо умеющему обрабатывать тексты и регекспы. Перл?

Корованы? Даже не знаю куда их засунуть.

Главный вопрос: такое уже существует? Кто-нибудь пытался осуществить подобное?

★★★★★

>Пусть знает всего один формат: PNM. А всё остальное пускай декодирует утилитами типа входящих в netpbm и получает через stdin.
Выдирание гланд через жопу же.

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

> есть же Imagemagick

У display самый неудобный интерфейс, который я когда-либо встречал. Или ты про другое?

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

> Есть только один! труЪ! кошерный! формат! - xpm.

Мне он тоже жутко понравился =) Позволяет смотреть картинку прямо в текстовом редакторе.

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

Мало того что смотреть, так ее еще и редактировать можно легко там же ;)

anotheranonymous
()

Вместе с Houdini идёт кошерный просмоторщик, насколько я помню. А вообще и так неплохо.

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

> Есть только один! труЪ! кошерный! формат! - xpm.

Который является расширением Netpbm.

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

> feh лучше, чем все, что ты предложил

Вот ради такого ответа я вопрос и задал. Спасибо.

Как минимум, feh не поддерживает анимированные GIF-ы, очень медленно работает, не умеет открывать файл через GUI, не умеет переопределять управляющие клавиши. Добавление новых форматов потребует правки imlib.

Если я не прав, пожалуйста, перечисли как в feh сделать всё, что перечислено в моём первом посте.

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

> Переводить изображение в ASCII-картинку и смотреть в терминале

А как быть с мышевозильным интерфейсом?

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

> для того чтобы было удобно и главное быстро, пусть будут плугины для каждого формата

Несовместимые между просмотрщиками и плохо поддерживаемые.

> Для юниксвей видимо никак,

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

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

> tldr

Можно ссылку?

> mirage

Спасибо, смотрю. Написан на питоне, не поддерживает переопределение клавиш, масштабирование рисунка с 800x600 до ~1000x750 занимает пару секунд...

И как он связан с feh?

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

Меня можешь записать как помошника с гуйней на Gtk =)

Только вот перл не знаю.. Но С#, C, Vala умею.

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

> Меня можешь записать как помошника с гуйней на Gtk =)

Тоже учту :)

question4 ★★★★★
() автор топика

ОМГ, велик!
Есть хороший гуевый просмоторщик, называется GQView, да GTK-only, да уже релизов давно нет, но функционал достойный. Лучше бы его допилили.

gh0stwizard ★★★★★
()

а зачем так велосипедно все делать? не проще написать нормальную графическую библиотеку (или взять готовую) и на базе неё написать 2 гуя ? помоему это лучше чем городить велосипеды распарсивая stdin

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

имхо парсить вывод каких то консольных утилит вообще плохой подход при написании хороших програм. Ведь по сути вывод на консоль - это есть аналог граф интерфейса, т.е. он ориентирован на пользователя и его по определению не стоит парсить в сторонних программах - мы ж не пытаемся распознать изображение у какой нибудь гуишной проги и использовать полученный результат в другой... В теории создание графического интерфейса (в нашем случае формат вывода в консоли) это работа не программиста а дизайнера, поэтому консольный вывод может часто меняться и между взаимодействия двух программистов (функционала двух програм) появляется еще один слой. Поэтому ИМХО правильнее весь функционал, которому планируется сделать reuse выносить в отдельные библиотеки с стабильным и удобным API и уже использовать их.

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

> GQView

Неплохая программа.

> функционал достойный

Как обычно нет поддержки анимированных гифов и переопределения клавиш :) Или есть?

> да уже релизов давно нет,

Интересно, почему автор его забросил?

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

> не проще написать нормальную графическую библиотеку

Ещё одну?

> или взять готовую

Например Netpbm?

> это лучше чем городить велосипеды распарсивая stdin

Так об этом я и спрашиваю. Есть ли библиотека с интерфейсом таким же простым, как конвертер в PNM? Есть ли универсальный способ передачи данных помимо stdin/stdout? Есть ли универсальный формат растровых изображений удобнее PNM?

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

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

Неверная аналогия. Ты вывод giftopnm видел? Не очень-то он человеко-ориентированный :)

> правильнее весь функционал, которому планируется сделать reuse выносить в отдельные библиотеки с стабильным и удобным API и уже использовать их.

Тут всё — сплошной реюз. Библиотек для чтения изображений — зоопарк. Графических тулкитов только основных 2, с несовместимыми между собой версиями. И ещё больший зоопарк просмотрщиков.

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

А зачем тебе навороченный просмоторщик, если ты не по части видео? Стандартные от KDE и GNOME вполне себе сойдут.

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

> Стандартные от KDE и GNOME вполне себе сойдут.

Смотри первый пост :)

Почему-то все стандартные сочетают тяжеловесность с неумением показывать анимированные гифы. И неисправимыми мелкими шероховатостями.

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

>Неверная аналогия. Ты вывод giftopnm видел? Не очень-то он человеко-ориентированный :)

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

>Библиотек для чтения изображений — зоопарк. Графических тулкитов только основных 2, с несовместимыми между собой версиями. И ещё больший зоопарк просмотрщиков.

вы так говорите, как будто бы это плохо

и я про зоопарки в данном случае и не говорил, я говорил что метод построения gui поверх консольных утилит плохой. Вы ж надеюсь

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

> А как быть с мышевозильным интерфейсом?

Терминал можно и в гуях открыть. ;-)

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

> xnview

Смотрел. Linux-версия была на Motiff, из-за чего смотрелась совершенно непотребно. Кроме того, в отличии от оффтопичной реализации она тормозила.

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

> xnview

Версия 1.70 на новых системах уже не работает. Из Gentoo выкинули.

Новая Qt-версия ещё в стадии висючей альфы.

К тому же закрытый.

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

> Есть же jpg, gif, png, ppm, bmp, yuv, ico и page, зачем еще что-то?

В смысле? И к чему относится реплика: к первому посту, или какой-то программе?

Если "Зачем другие форматы?", то отвечу, что помимо вышеперечисленных я иногда использую TIFF, DejaVu и PCX. Неплохо также было бы SVG, WMF и sK1. А под "поддержкой GIF" многие почему-то упорно понимают показ первого кадра на клетчатом фоне.

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

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

Нет, эти программы созданы именно для того, чтобы ими пользовались роботы.

> вы так говорите, как будто бы это плохо

Если б хоть одну открытую программу довели до числа форматов IrfanView при не меньшей надёжности и удобстве, было б хорошо.

> метод построения gui поверх консольных утилит плохой

Чем он плох? Скорость будет низкой? Или что?

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

>> xnview

> Смотрел. Linux-версия была на Motiff, из-за чего смотрелась совершенно непотребно

Теперь она вдобавок не работает и не поддерживается :)

Новая версия — на Qt и смотрится неплохо. Но пользоваться ею я не смог :)

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