LuaPicture — макрос для быстрого просмотра картинок

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

Сам макрос тут.
для его работы нужен фар 3.0.3591+ и luamacro 3.0.212+.
смотрит всё, что умеет gdi+.
для гифов фиксированная задержка между кадрами 100мс.
для просмотра картинки надо нажать ctrlq в режиме панелей.
выглядит это примерно так:
Attachments
picture.png
picture.png (100.07 KiB) Viewed 91442 times
Last edited by HaRT on Sun 24 May, 2020 13:08, edited 1 time in total.
Reason: Добавил LuaPicture в Заголовок Темы
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

Latest post of the previous page:

HaRT wrote: Thu 04 Aug, 2022 00:41 Постараюсь на днях посмотреть. Интересно, а far.AdvControl(F.ACTL_GETFARHWND) под SSH вообще что-то осмысленное возвращает? Если нет, то можно было бы по этому признаку отличать.
Посмотрел, что происходит в сеансе с использованием встроенного OpenSSH-сервера: far.AdvControl(far.Flags.ACTL_GETFARHWND) возвращает какое-то ненулевое userdata (которое, как я понимаю, и есть HWND окна), т.ч. по этому признаку определить SSH-сеанс, к сожалению, не получится. Правда, Spy++ окно с таки хэндлом почему-то не находит, т.ч., возможно, ещё не всё потеряно.
Что странно, так это то, что даже при включенном консольном показе картинки отображается пустой диалог (но с правильным заголовком и почему-то кареткой в нижнем правом углу).
Last edited by HaRT on Mon 08 Aug, 2022 01:58, edited 1 time in total.
Reason: Добавлено дополнение про Spy++
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

HaRT wrote: Mon 08 Aug, 2022 01:09 Что странно, так это то, что даже при включенном консольном показе картинки отображается пустой диалог (но с правильным заголовком и почему-то кареткой в нижнем правом углу).
потому что GdipDrawImageI в ssh работает, а GdipDrawImageRectI — нет. самое смешное, что они обе в итоге зовут одну и ту же функцию.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Tue 09 Aug, 2022 19:04 они обе в итоге зовут одну и ту же функцию
Я правильно понимаю, что речь про GdipDrawImageRectRect (или Graphics::DrawImage(Image,constPointF,INT,REAL,REAL,REAL,REAL,Unit,constImageAttributes,DrawImageAbort,VOID))? Даже если ошибаюсь, не можем ли мы ту общую ф-ю вызывать сами?
Last edited by HaRT on Wed 10 Aug, 2022 22:39, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

ssh исправил и добавил детектирование.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Wed 24 Aug, 2022 23:13ssh исправил
И даже с количеством цветов всё в порядке, по меньшей мере при локальном соединении (ssh DOMAIN\ACCOUNT@localhost).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Thu 04 Aug, 2022 13:45 про текстовой предпросмотр — хорошая идея, сделаю.
Это решили пока отложить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

HaRT wrote: Thu 25 Aug, 2022 13:45Это решили пока отложить?
из-за того, что нет масштабирования больше 100%, реализация нетривиальна. будет время — сделаю.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Thu 25 Aug, 2022 22:47 из-за того, что нет масштабирования больше 100%, реализация нетривиальна
Вы имеете в виду, что, чтобы «текстовый» эскиз соответствовал графическому изображению, картинку может потребоваться увеличить?
Так ведь можно в первом приближении не усложнять, и для маленьких картинок просто не выводить эскиз. Так для мелких ничего не ухудшится, а для больших заметно улучшится.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6856
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 536 times

LuaPicture — макрос для быстрого просмотра картинок

Post by Shmuel »

Хотелось в моём форке far2l иметь подобный скрипт, но похоже это нереально.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg, я там запилил PR, который добавляет в заголовок диалога индикацию масштаба отображения картинки.
Т.е. заголовок будет наподобие 4080 x 3072 * 1 R0F0 @ 16% для графического отображения и наподобие 4080 x 3072 * 1 R0F0 ~ 2% для отображения текстового (разумеется, маркер ориентации вроде R0F0 будет, как и прежде, только у тех картинок, у которых есть соответствующий тег).
Если нет возражений по функциональности и коду, прошу влить это в головной реп.

P.S. Ага, вижу, что влили. Спасибо.
Last edited by HaRT on Tue 11 Jun, 2024 21:12, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg, я тут обнаружил, что у меня для NEF-файлов не происходит авто-поворот (на других raw картинках я просто не проверял), потому что в извлечённом из них скриптом файле картинки не содержится EXIF-тег ориентации. Взялся я это исправлять, но заленился писать код по честному извлечению тега из «родительского» файла картинки и прикрутил вызов ExifTool. Однако получается довольно медленно (для моих картинок порядка лишних полусекунды, плюс собственно поворот). И тут я заметил, что в скрипте уже есть парсинг каких-то подозрительно похожих тегов при извлечении картинки. Но что там происходит, я пока не вполне разобрался.
Подскажите, пожалуйста, нельзя ли там в качестве дешёвого побочного продукта получить тег 0x0112 (274, Exif.Image.Orientation)?

UPD Вроде разобрался, и получилось сравнительно быстро. Но как-то это выглядит не вполне надёжно, поэтому медленный запасной вариант с ExifTool пока оставлю. Скоро подготовлю PR.
Last edited by HaRT on Wed 12 Jun, 2024 13:49, edited 1 time in total.
Reason: Добавлен второй абзац
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

HaRT, поделитесь ссылкой на пример.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Wed 12 Jun, 2024 13:55 поделитесь ссылкой на пример
Да я вроде уже разобрался (и обновил сообщение выше), т.ч. пока не тратьте время. Но будет неплохо, если посмотрите этот кусок, когда я подгоню PR.
Я постараюсь найти подходящую картинку, которую готов выложить на всеобщее обозрение.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Wed 12 Jun, 2024 13:55 поделитесь ссылкой на пример
Вот, например, из первых попавшихся небольших: https://www.rawsamples.ch/raws/canon/40 ... W_V103.CR2
И вообще на том сайте просто кладезь разных RAW!
А самым первым мне попался DNG, который LuaPicture вовсе не показывает: https://www.rawsamples.ch/raws/canon/RA ... .7-725.DNG
Впрочем, там со многими файлами такое.

P.S. Если хочется картинку, где поворот невырожденный, то вот: https://www.rawsamples.ch/raws/nikon/d7 ... ON_D70.NEF
Last edited by HaRT on Wed 12 Jun, 2024 14:51, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6074
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 187 times
Contact:

LuaPicture — макрос для быстрого просмотра картинок

Post by zg »

HaRT wrote: Wed 12 Jun, 2024 14:33Впрочем, там со многими файлами такое.
у меня цель была, чтобы то, что у меня есть смотрело (и то, dng с люмий так и не смотрит, но там всегда к dng был парный jpg). плюс добавил то, что было очень похоже. претензии на хоть какой-то охват там нет.
User avatar
HaRT
Moderator
Posts: 10937
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 224 times
Been thanked: 362 times

LuaPicture — макрос для быстрого просмотра картинок

Post by HaRT »

zg wrote: Wed 12 Jun, 2024 14:55 претензии на хоть какой-то охват там нет
Так и я без претензий к функциональности, просто поделился наблюдениями от своего небольшого тестирования.

Кстати, вот PR, который реализует авто-поворот для raw-картинок (где смог определить ориентацию), добавляет тайминги в заголовок диалога и исправляет удаление временного файла, когда выдранную картинку не удалось загрузить (плюс улучшайзинг по мелочи).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Полезные макросы и скрипты”