LINUX.ORG.RU
ФорумTalks

Simple Viewer GL v2.99 — просмотрщик изображений

 , ,


1

2

Simple Viewer GL — легковесный просмотрщик изображений.

Интерфейс состоит из одного окна с опциональной строкой статуса и информацией о пикселе под курсором и/или выделенной области (скриншот). Simple Viewer GL умеет определять тип файла по его сигнатуре, а не только по расширению, а также рекурсивно сканировать директорию.

Список поддерживаемых форматов:
PNG, JPEG, PSD, AI, EPS, GIF, TIFF, TARGA, ICO, PNM, DDS, BMP, XWD, SCR (ZX-Spectrum screen), XPM, WebP, OpenEXR.

Работает в GNU/Linux, FreeBSD и macOS.


Новое в 2.99:

  • Добавлена поддержка формата OpenEXR.
  • Добавлена поддержка форматов ZX-Spectrum multicolor + border.
  • Уменьшено потребление памяти при загрузке PNG.
  • Расширена поддержка GIF.
  • Добавлена поддержка CMYK PSD.
  • Добавлена поддержка CMYK JPEG.
  • Улучшена поддержка TARGA RGB 16.
  • Добавлена возможность предпросмотра форматов Adobe Illustrator и Adobe EPS.
  • Введена возможность «укорачивания» длинных имен файлов в инфобаре (длина настраивается в конфиге).
  • Теперь вьювер собирается и работает на FreeBSD.
  • Улучшен детектор JPEG формата.
  • В конфиг добавлен параметр «font_ratio».
  • Добавлены правила сборки DEB и RPM.
  • Добавлена поддержка форматов ZX-Spectrum multicolor + border.
  • В macOS конфиг перенесен в «~/Library/Application Support/sviewgl/config»
  • Теперь клавиша <Delete> не удаляет файл, а помечает его для удаления. Для удаления с диска помеченных файлов добавлена комбинация <Ctrl+Delete>.
  • Добавлен хоткей <Shift+?>.
  • Улучшен попап Pixel Info.
  • Починил запуск в полноэкранном режиме.
  • Сделал «ленивую» инициализацию загрузчиков.
  • Добавлена пиксельная сетка и хоткей <g> для нее.
  • Исправлен режим фильтрации текстур.
  • Добрый художник-альтруист нарисовал новую иконку.



Simple Viewer GL на BitBucket.

Бинарная сборка для macOS в разделе downloads.

★★★★★

Бинарник собирается, но есть 2 проблемы на Ubuntu 18.04:
1) Собирается без поддержки WebP хотя libwebp установлен

$ dpkg -l libwebp*
Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h]
| Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]/
            частично установлен[H]/trig-aWait/Trig-pend
|/ Ошибка?=(нет)/требуется переустановка[R] (верхний регистр
в полях состояния и ошибки указывает на ненормальную ситуацию)
||/ Имя                     Версия           Архитектура      Описание
+++-=======================-================-================-===================================================
ii  libwebp-dev:amd64       0.6.1-2          amd64            Lossy compression of digital photographic images.
ii  libwebp6:amd64          0.6.1-2          amd64            Lossy compression of digital photographic images.
ii  libwebp6:i386           0.6.1-2          i386             Lossy compression of digital photographic images.
ii  libwebpdemux2:amd64     0.6.1-2          amd64            Lossy compression of digital photographic images.
ii  libwebpmux3:amd64       0.6.1-2          amd64            Lossy compression of digital photographic images.
На всякий случай пути:
/usr/include/webp:
decode.h  demux.h  encode.h  mux.h  mux_types.h  types.h

/usr/lib/x86_64-linux-gnu:
libwebp.a  libwebpdemux.a  libwebpdemux.so  libwebpmux.a  libwebpmux.so  libwebp.so  pkgconfig  libwebp.so.6  libwebp.so.6.0.2

/usr/lib/x86_64-linux-gnu/pkgconfig:
libwebpdemux.pc  libwebpmux.pc  libwebp.pc

2) make deb не может собрать deb:

$ make deb
rm -fr .build_release .build_debug sviewgl sviewgl cppcheck-output sviewgl-3.06* sviewgl_3.06* *.log *.tasks *.sh *.xz *.list *.deb strace_out cov-int
install -d sviewgl-3.06
cp -R cmake src res dist/debian INSTALL README.md CMakeLists.txt Makefile sviewgl.desktop res/Icon-1024.png dist/fedora/* dist/gentoo/* sviewgl-3.06
mv sviewgl-3.06/simpleviewer-gl-_VERSION_.ebuild sviewgl-3.06/simpleviewer-gl-3.06.ebuild
sed "s/_VERSION_/3.06/" -i sviewgl-3.06/sviewgl.spec
sed "s/_VERSION_/3.06/" -i sviewgl-3.06/debian/changelog
tar -zf sviewgl-3.06.tar.gz -c sviewgl-3.06
mv sviewgl-3.06.tar.gz sviewgl_3.06.orig.tar.gz
cd sviewgl-3.06 ; PREFIX=/usr dpkg-buildpackage -F -tc
dpkg-buildpackage: инфо: пакет исходного кода sviewgl
dpkg-buildpackage: инфо: версия исходного кода 3.06-1
dpkg-buildpackage: инфо: дистрибутив исходного кода unstable
dpkg-buildpackage: инфо: исходный код изменён Andrey Ugolnik <andrey@ugolnik.info>
dpkg-buildpackage: инфо: архитектура узла amd64
 dpkg-source --before-build sviewgl-3.06
 fakeroot debian/rules clean
make[1]: вход в каталог «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
dh clean 
   dh_auto_clean
	make -j1 clean
make[2]: вход в каталог «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
rm -fr .build_release .build_debug sviewgl sviewgl cppcheck-output sviewgl-3.06* sviewgl_3.06* *.log *.tasks *.sh *.xz *.list *.deb strace_out cov-int
make[2]: выход из каталога «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
   dh_clean
make[1]: выход из каталога «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
 dpkg-source -b sviewgl-3.06
dpkg-source: инфо: используется формат исходника «3.0 (quilt)»
dpkg-source: инфо: сборка sviewgl с использованием существующего ./sviewgl_3.06.orig.tar.gz
dpkg-source: инфо: сборка sviewgl в sviewgl_3.06-1.debian.tar.xz
dpkg-source: инфо: сборка sviewgl в sviewgl_3.06-1.dsc
 debian/rules build
make[1]: вход в каталог «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
dh build 
   dh_update_autotools_config
   dh_auto_configure
   dh_auto_build
	make -j1
make[2]: вход в каталог «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
cd .build_release ; cmake -DCMAKE_BUILD_TYPE=Release -DAPP_VERSION_MAJOR:STRING=3 -DAPP_VERSION_MINOR:STRING=0 -DAPP_VERSION_RELEASE:STRING=6 .. ; make ; cd ..
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- ***************************
-- * Simple Viewer GL v3.0.6 *
-- ***************************
-- *      Release Build      *
-- ***************************
-- * OpenGL found
-- * GLFW3 found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- * Threads found
-- * X11 found
-- * ZLib found
-- * PNG support enabled
-- * JPEG support enabled
-- * EXIF support enabled
-- Checking for module 'lcms2'
--   Found lcms2, version 2.9
-- * LCMS2 support enabled
-- * OpenJPEG2 support enabled
-- * GIF support enabled
-- * TIFF support enabled
-- * WebP support disabled   <-------------WebP------------
-- Checking for module 'IlmBase'
--   Found IlmBase, version 2.2.0
-- * OpenEXR support enabled
-- * Curl support disabled
-- Found IMLIB2: /usr/lib/x86_64-linux-gnu/libImlib2.so  
-- * Imlib2 support enabled
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- ***************************
CMake Error at CMakeLists.txt:275 (add_subdirectory):    <----------------------------
  add_subdirectory given source "third-party/imgui" which is not an existing
  directory.


CMake Error at CMakeLists.txt:278 (add_subdirectory):    <----------------------------
  add_subdirectory given source "third-party/xcf" which is not an existing
  directory.


-- Configuring incomplete, errors occurred!
See also "/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06/.build_release/CMakeFiles/CMakeOutput.log".
See also "/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06/.build_release/CMakeFiles/CMakeError.log".
make[3]: вход в каталог «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06/.build_release»
make[3]: *** Не заданы цели и не найден make-файл.  Останов.
make[3]: выход из каталога «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06/.build_release»
rm -fr sviewgl && cp -r .build_release/sviewgl sviewgl
cp: не удалось выполнить stat для '.build_release/sviewgl': Нет такого файла или каталога
Makefile:31: recipe for target 'release' failed
make[2]: *** [release] Error 1
make[2]: выход из каталога «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
dh_auto_build: make -j1 returned exit code 2
debian/rules:18: recipe for target 'build' failed
make[1]: *** [build] Error 2
make[1]: выход из каталога «/home/user123/build/image-viewer/simple-viewer-gl/sviewgl-3.06»
dpkg-buildpackage: ошибка: debian/rules build subprocess returned exit status 2
Makefile:62: recipe for target 'deb' failed
make: *** [deb] Error 2
$ 

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

andreyu
По 1 багу разобрался.
Т.к. в CMakeLists.txt это:

...
find_package(WEBP QUIET) 
...
if(WEBP_FOUND)
...
то и модуль поиска должен иметь имя FindWEBP.cmake (в том-же регистре букв)
https://cmake.org/cmake/help/v3.0/command/find_package.html

Переименуй:

$ mv ./cmake/FindWebP.cmake ./cmake/FindWEBP.cmake 

или переименовывай кучу переменных WEBP_xxxx в WebP_xxxx. Выбирай что проще.

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от superuser

Спасибо за отчет.

1) Собирается без поддержки WebP хотя libwebp установлен

По какой-то причине cmake не смог найти библиотеку.
Видимо pkg_check_modules(PC_WEBP QUIET libwebp) не видит библиотеку. Почему это так я не знаю.

third-party/imgui
third-party/xcf

А что у вас в этих директориях?

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

то и модуль поиска должен иметь имя FindWEBP.cmake (в том-же регистре букв)

Чертова Case Insensitive FS. Пофиксил.

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

А что у вас в этих директориях?

И перед make deb и после - одинаково:

$ ls -R third-party
third-party:
imgui  xcf

third-party/imgui:
CMakeLists.txt  imgui  LICENSE  README.md

third-party/imgui/imgui:
imconfig.h  imgui.cpp  imgui_draw.cpp  imgui.h  imgui_internal.h  stb_rect_pack.h  stb_textedit.h  stb_truetype.h

third-party/xcf:
ChangeLog  CMakeLists.txt  README  xcftools

third-party/xcf/xcftools:
config.h   enums.h       flatten.cpp  io-unix.cpp  palette.h   pixels.h      table.cpp  xcf-general.cpp
enums.cpp  flatspec.cpp  flatten.h    palette.cpp  pixels.cpp  scaletab.cpp  utils.cpp  xcftools.h

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от superuser

И перед make deb и после - одинаково:

Они должны были склонироваться командой git clone

Получается, что эти модули у вас есть, но cmake их не видит:

add_subdirectory given source «third-party/imgui» which is not an existing directory.

Попробуйте так:

$ make clean release
andreyu ★★★★★
() автор топика
Ответ на: комментарий от superuser

Проблема в другом - не работает make deb.

Правила для install dist, deb, rpm делал не я. Сейчас уже не помню, кто их предложил. Если у вас есть идея как это править, то я добавлю фиксы.

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

Так а зачем тогда вам deb? Просто пропишите пути к директории с файлом sviewgl или скопируйте / сделайте линк на него.

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

написал-же - хотел подсмотреть как дебианизацию правильно делать
п.с.: Можно на ты, даже удобнее мне как-то.

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

если что, то deb собрался так:

$ dh_make --createorig
...
$ echo -e "override_dh_usrlocal:\n\n" >> ./debian/rules 
...
$ dpkg-buildpackage -us -uc
...
но в нём только бинарник без иконки и прочего

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

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

А флаг -C работает?
Хотел цвет фона на чёрный поменять - не получается (я из master собирал, коммит 1f70058).

Ja-Ja-Hey-Ho ★★★★
()
Ответ на: комментарий от superuser

Можно на ты, даже удобнее мне как-то.

Без проблем.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от Ja-Ja-Hey-Ho

А флаг -C работает?

Этот флаг лишь устанавливает цвет заливки фона, если отключена шахматная заливка. Цвет так же можно задать из конфига.

Флаг -c отключает шахматную заливку и использует установленный цвет фона.

Хоткей c переключает заливку цветом и шахматную заливку.

В вашем случае можно делать так:

sviewgl -c -C ff0000 image.png

andreyu ★★★★★
() автор топика
Последнее исправление: andreyu (всего исправлений: 1)
Ответ на: комментарий от superuser

если что, то deb собрался так:

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

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

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

Нет под рукой debian

Думаю не в debian-е дело:

$ grep -n third-party CMakeLists.txt 
275:add_subdirectory(third-party/imgui)
276:include_directories("third-party/imgui")
278:add_subdirectory(third-party/xcf)
279:include_directories("third-party/xcf")

Разве не должно быть так?:

$ grep -n third-party CMakeLists.txt 
275:add_subdirectory(${PROJECT_SOURCE_DIR}/third-party/imgui)
276:include_directories("third-party/imgui")
278:add_subdirectory(${PROJECT_SOURCE_DIR}/third-party/xcf)
279:include_directories("third-party/xcf")
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Разве не должно быть так?:

А почему оно должно быть так?

Идея билда такова:

$ mkdir build
$ cd build
$ cmake ..
$ make
$ cd -
$ ./sviewgl

andreyu ★★★★★
() автор топика
Последнее исправление: andreyu (всего исправлений: 2)
Ответ на: комментарий от andreyu

А почему оно должно быть так?

Потому что при «так»:

add_subdirectory given source "third-party/imgui" which is not an existing directory.

- будет уже некоторой «странностью».

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

add_subdirectory given source «third-party/imgui» which is not an existing directory.

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

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

почему путь к ней неправильный

Потому что «${PROJECT_SOURCE_DIR}/build/third-party/imgui» действительно неверный путь, а «${PROJECT_SOURCE_DIR}/third-party/imgui» - верный.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Потому что «${PROJECT_SOURCE_DIR}/build/third-party/imgui» действительно неверный путь, а «${PROJECT_SOURCE_DIR}/third-party/imgui» - верный.

Ну и по какой же причине путь становится ${PROJECT_SOURCE_DIR}/build/third-party/imgui вместо правильного ${PROJECT_SOURCE_DIR}/third-party/imgui?

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

То бишь, проблема не в CMakeLists.txt

Интересный «вывод»! )

$ grep -n "/cmake" CMakeLists.txt 
9:set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")

К чему бы это? )

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

К чему бы это? )

Действительно, к чему бы это?

Или вы считаете, что если убрать ${PROJECT_SOURCE_DIR}, то проект не соберется?

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

По схеме комментарий: andreyu (06.06.19 15:43:47) нет.

Вы бы проверили прежде, чем утверждать такое. Я вот не поленился и проверил все на чистом клоне на двух системах - Linux и macOS.

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

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

Возможно, вопрос уже звучал, но: чем это лучше feh'а? Какой смысл плодить легковесные смотрелки изображений, когда уже есть одна классная?

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

Правила для install dist, deb, rpm делал не я.

Их делал я, но на тот момент они работали — тестировал в контейнерах на федоре, дебиане, убунте и центоси. С тех пор не проверял, так как у самого джента и соответственно умвр. Могу опять погонять опять в контейнерах, если надо и когда будет время.

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

Зачем делать своих детей, если уже есть чужие классные?

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

Возможно, вопрос уже звучал, но: чем это лучше feh’а? Какой смысл плодить легковесные смотрелки изображений, когда уже есть одна классная?

Тем, что feh не умеет того, что умеет Simple Viewer GL и что нужно мне. Кроме того, feh использует imlib2 в качестве лоадера, а эта библиотека имеет плохую поддержку форматов. Мой вьювер тоже может использовать imlib2, но только как затычку.

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

Их делал я, но на тот момент они работали

Точняк. Спасибо за это.

Могу опять погонять опять в контейнерах, если надо и когда будет время.

Было бы здорово.

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

Визи это 9? А то я в вашей игрушечной терминологии слаб. Емнип на 9 это все и тестировалось. Впрочем, проверю. Думал убунта. С ней приколы. Есть код в конторе, который собирается на всем, кроме убунты.

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

Симейк ко мне никакого отношения не имеет. По его поводу к автору.

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

Обновиться не желаете?

Ни капли. У меня система на четверть собранная из git-а. А squashfs+aufs менять на systemd не горю желанием.

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

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

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

Было бы здорово еще сделать тег и подписаться на него. А то тему случайно в трекере увидел.

Если речь о метках топика, то я ставил такие opengl,simpleviewer,viewer.

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

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

Зачем? Такими «древностями» как я, уже никто не пользуется. Если у Вас всё пашет - гуд. Ни к чему здесь обратную совместимость наводить. :)

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