Просмотр файлов как картинок

Здесь обсуждаются темы, косвенно связанные с Far.
Post Reply
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Эта тема является прямым продолжением моих аналогичных тем про преобразование различных файлов в текстовую информацию:
Консольные конвертеры текстовых документов
Консольные программы для просмотра свойств файлов

Здесь же я хочу рассмотреть файлы с другой стороны, а именно преобразовывая или извлекая из них различные изображения.
Тема витала на форуме уже давно и первые начинания были ещё в 2009 году. С тех пор находились новые утилитки и исследовались различные типы файлов.

Как и в предыдущих темах, активно используются вспомогательные утилитки портированные из Линукса.

Тема будет полезна тем кто пользуется плагинами просмотра картинок такие как Review, Multimedia Viewer и (кажется) PictureView3 - такие, которые умеют автоматически определять тип файла открытого во встроенном вьювере Far.

:!: Основная настройка плагинов должна быть следующей:
  • включить автоматическое распознавание файлов изображений во встроенном вьювере Far;
  • добавить расширение TMP в список какого-нибудь универсального декодера (у меня GFL)
Также, для более удобного перехода к просмотру следующего файла, был создан дополнительный макрос (к плагину Review, которым я пользуюсь) для перехода к следующему/предыдущему файлу
Last edited by SlashNet on Fri 14 Jan, 2022 21:12, edited 2 times in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Начну, пожалуй, с самого интересного: видеофайлы.
Как и другие пользователи, я столкнулся с нестабильными но очень раздражающими вылетами плагина (а за ним и Фара) при открытии видеофайлов. Видео я в Фаре не смотрю - мне необходимо всего лишь понять что это за файл без запуска внешнего плейера. Поэтому возникла идея генерировать превьюшки с кадрами из видео и автоматически их показывать.

С этой задачей неплохо справляется утилитка Movie Thumbnailer (mtn) она довольно шустрая (по крайней мере на современных компьютерах) и поддерживает большинство популярных форматов видео. Из минусов отмечу, что генерирует картинку исключительно в файл с тем же названием, что и у оригинального видео, и нет поддержки HEVC-кодека (ещё, почему-то, спотыкается на некоторых коротких файлах). Но для 90% файлов справляется на ура.

Батник для базового использования будет выглядеть примерно так:
  1. @echo off
  2.  
  3. md "%TEMP%\mtn_temp" 1>nul 2>nul
  4.  
  5. D:\Soft\_Tools_\Video\MTN\mtn.exe -b 0,70 -D 6 -c 4 -r 4 -P -k 404040 -F FFFFFF:10 -O "%temp%\mtn_temp" "%~1" 1>nul 2>nul
  6.  
  7. if exist "%temp%\mtn_temp\%~n1_s.jpg" type "%temp%\mtn_temp\%~n1_s.jpg"
  8.  
  9. rmdir /q /s "%TEMP%\mtn_temp" 1>nul 2>nul
ассоциация для файлов самая обычная: view:<iviewvideo.cmd "!\!.!"

А выглядеть это будет как-то так (цвет заголовка можно настроить):
klip_s.jpg
В моём же случае мне этого показалось мало - некоторые видеофайлы вышеописанной программой обрабатываться не захотели и было решено добавить вспомогательную программу именно для таких случаев. А какая самая многофункциональная программа обработки видео? Правильно - ffdshow. После различных экспериментов стало понятно, что процесс создания превьюшки этой программой значительно медленнее (особенно на менее современных компьютерах). Поэтому ограничился отображением всего четырёх кадров.

Выглядит это примерно так:
Clipboard_14.01.2022_20-42-56,32.jpg
Но всё же такая картинка генерировалась заново при каждом новом просмотре (и не всегда с приемлемой скоростью). Так что появилась ещё одна идея: сохранять сгенерированные превьюшки, а затем просто показывать их без повторной генерации. Наиболее удобным местом для хранения данной информации мне приглянулось одно из свойств файловой системы NTFS, а именно альтернативные потоки файлов.
Так что на данный момент, мой текущий батник обрабатывает видеофайлы следующим образом:
  • При открытии проверяется у файла видео наличие альтернативного потока с названием VideoThumb.jpg.
  • Если он есть - показываем готовую превьюшку
  • Если его нет - генерируем новую, показываем и пытаемся записать её в альтернативный поток видеофайла (если файловая система не поддерживает альтернативные потоки - FAT32, файлы на CD-дисках или на сетевых шарах, то для этих файлов превьюшка будет просто генериться каждый раз заново).
К тому же он значительно распух из-за всяких дополнительных функций которые я дописывал время от времени.
Используются в нём следующие программы:
  • вышеупомянутый mtn - для основного функционала
  • ffdshow - для генерации дополнительных превьюшек
  • MediaInfo и ImageMagick - в качестве вспомогательных
Также, для вертикальных видео с телефонов, превьюшка создаётся не 2х2, а 4х1 для лучшего заполнения экрана.

:!: Обратите внимание: при добавлении превьюшки в альтернативный поток файла у него обновится дата и время последней записи / изменения на текущие.

Выглядит мой файл SetThumbtoVideo.cmd вот так:
  1. @echo off
  2.  
  3. md "%TEMP%\mtn_temp" 1>nul 2>nul
  4.  
  5. D:\Soft\_Tools_\Video\MTN\mtn.exe -b 0,70 -D 6 -c 4 -r 4 -P -k 404040 -F FFFFFF:10 -O "%temp%\mtn_temp" "%~1" 1>nul 2>nul
  6.  
  7. if exist "%temp%\mtn_temp\%~n1_s.jpg" goto ext
  8.  
  9.  
  10.  
  11. for /F "usebackq delims=" %%i in (`D:\Soft\_Tools_\Video\MediaInfo\MediaInfo.exe "--Output=Video;%%Duration/String3%%" "%~1"`) do @set tt=%%i
  12.  
  13.  
  14.  
  15. for /F "eol=. tokens=1,2* delims=:" %%i in ('echo %tt%') do set hrs=%%i& set mnts=%%j& set secs=%%k
  16.  
  17. set secs=%secs:~,2%
  18.  
  19. rem remove trail zeros
  20.  
  21. cmd /c exit /b %hrs%
  22.  
  23. set hrs=%errorlevel%
  24.  
  25. cmd /c exit /b %mnts%
  26.  
  27. set mnts=%errorlevel%
  28.  
  29. cmd /c exit /b %secs%
  30.  
  31. set secs=%errorlevel%
  32.  
  33.  
  34.  
  35. set /a tots=%hrs%*3600+%mnts%*60+%secs%
  36.  
  37. set /a ss=%tots%/5
  38.  
  39. set /A "hh=ss/3600+100,ss%%=3600,mm=ss/60+100,ss=ss%%60+100"
  40.  
  41. set tstamp1=%hh:~1%:%mm:~1%:%ss:~1%
  42.  
  43. set /a ss=%tots%/5*2
  44.  
  45. set /A "hh=ss/3600+100,ss%%=3600,mm=ss/60+100,ss=ss%%60+100"
  46.  
  47. set tstamp2=%hh:~1%:%mm:~1%:%ss:~1%
  48.  
  49. set /a ss=%tots%/5*3
  50.  
  51. set /A "hh=ss/3600+100,ss%%=3600,mm=ss/60+100,ss=ss%%60+100"
  52.  
  53. set tstamp3=%hh:~1%:%mm:~1%:%ss:~1%
  54.  
  55. set /a ss=%tots%/5*4
  56.  
  57. set /A "hh=ss/3600+100,ss%%=3600,mm=ss/60+100,ss=ss%%60+100"
  58.  
  59. set tstamp4=%hh:~1%:%mm:~1%:%ss:~1%
  60.  
  61.  
  62.  
  63. D:\Soft\_Tools_\Video\FFMpeg\bin\ffmpeg.exe -ss %tstamp1% -i "%~1" -vframes 1 -f mjpeg "%temp%\mtn_temp\thumb1.jpg" -v quiet
  64.  
  65. D:\Soft\_Tools_\Video\FFMpeg\bin\ffmpeg.exe -ss %tstamp2% -i "%~1" -vframes 1 -f mjpeg "%temp%\mtn_temp\thumb2.jpg" -v quiet
  66.  
  67. D:\Soft\_Tools_\Video\FFMpeg\bin\ffmpeg.exe -ss %tstamp3% -i "%~1" -vframes 1 -f mjpeg "%temp%\mtn_temp\thumb3.jpg" -v quiet
  68.  
  69. D:\Soft\_Tools_\Video\FFMpeg\bin\ffmpeg.exe -ss %tstamp4% -i "%~1" -vframes 1 -f mjpeg "%temp%\mtn_temp\thumb4.jpg" -v quiet
  70.  
  71.  
  72.  
  73. for /F "usebackq delims=" %%i in (`D:\Soft\_Tools_\Video\MediaInfo\MediaInfo.exe "--Output=Video;%%Width%%" "%~1"`) do @set vwidth=%%i
  74.  
  75. for /F "usebackq delims=" %%i in (`D:\Soft\_Tools_\Video\MediaInfo\MediaInfo.exe "--Output=Video;%%Height%%" "%~1"`) do @set vheight=%%i
  76.  
  77. for /F "usebackq delims=" %%i in (`D:\Soft\_Tools_\Video\MediaInfo\MediaInfo.exe "--Output=Video;%%Rotation%%" "%~1"`) do @set vrot=%%i
  78.  
  79. rem echo %vheight% GEQ %vwidth%
  80.  
  81. if "%vrot%" EQU "90.000" goto swapsides
  82.  
  83. if "%vrot%" EQU "270.000" goto swapsides
  84.  
  85. goto mont
  86.  
  87. :swapsides
  88.  
  89. set t_t=%vheight%
  90.  
  91. set vheight=%vwidth%
  92.  
  93. set vwidth=%t_t%
  94.  
  95.  
  96.  
  97. :mont
  98.  
  99. rem echo %vheight% GEQ %vwidth%
  100.  
  101. if %vheight% GEQ %vwidth% goto rawmontage
  102.  
  103. D:\Soft\_Tools_\Graphics\ImageMagick\montage.exe "%temp%\mtn_temp\thumb1.jpg" "%temp%\mtn_temp\thumb2.jpg" "%temp%\mtn_temp\thumb3.jpg" "%temp%\mtn_temp\thumb4.jpg" -geometry +2+2 "%temp%\mtn_temp\thumbs.jpg" >nul
  104.  
  105. D:\Soft\_Tools_\Graphics\ImageMagick\convert.exe -resize 1204 -antialias -pointsize 16 -font "Arial-Black" -fill "#ffffff" -stroke "#808080" -draw "text 10,20 'Duration: %tt%'" "%temp%\mtn_temp\thumbs.jpg" "%temp%\mtn_temp\%~n1_s.jpg" >nul
  106.  
  107. goto ext
  108.  
  109. :rawmontage
  110.  
  111. D:\Soft\_Tools_\Graphics\ImageMagick\montage.exe "%temp%\mtn_temp\thumb1.jpg" "%temp%\mtn_temp\thumb2.jpg" "%temp%\mtn_temp\thumb3.jpg" "%temp%\mtn_temp\thumb4.jpg" -geometry +2+2 -tile 4x "%temp%\mtn_temp\thumbs.jpg" >nul
  112.  
  113. D:\Soft\_Tools_\Graphics\ImageMagick\convert.exe -resize 1440 -antialias -pointsize 16 -font "Arial-Black" -fill "#ffffff" -stroke "#808080" -draw "text 10,20 'Duration: %tt%'" "%temp%\mtn_temp\thumbs.jpg" "%temp%\mtn_temp\%~n1_s.jpg" >nul
  114.  
  115. :ext
  116.  
  117. type "%temp%\mtn_temp\%~n1_s.jpg" > "%~1:VideoThumb.jpg"
  118.  
  119. type "%temp%\mtn_temp\%~n1_s.jpg"
  120.  
  121. rmdir /q /s "%TEMP%\mtn_temp" 1>nul 2>nul
А вызывается он из другого батника (в котором и проверяется наличие готовой превьюшки в альтернативном потоке):

Code: Select all

%binpath%\UnxUtils\cat.exe "%~1:VideoThumb.jpg" 2>nul
if %ERRORLEVEL% NEQ 0 (
call %binpath%\Video\SetThumbtoVideo.cmd "%~1"
)
Обрабатываемые расширения файлов у меня сейчас такие: .AVI .MKV .MP4 .M4V .MOV .WMV .FLV .MPG .WEBM .OGV .3GP .WTV .RV
Last edited by SlashNet on Sun 13 Feb, 2022 21:47, edited 8 times in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

В современных аудиофайлах тоже можно отыскать картинки которые можно посмотреть.
Нет. Мы не будем генерировать спектрограмму файла (я пробовал :ha: - результат огорчил своим быстродействием).
Довольно часто можно обнаружить обложки музыкальных альбомов в файлах .mp3, .flac и .m4a.
Для их вытаскивания пригодится утилитка работы с метаданными - ExifTool

Для MP3 и FLAC командная строка будет выглядеть следующим образом:

Code: Select all

view:< exiftool.exe -Picture -b "!\!.!"
А для M4A немного иначе:

Code: Select all

view:< exiftool.exe -CoverArt -b "!\!.!"
Last edited by SlashNet on Sun 13 Feb, 2022 21:46, edited 5 times in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
HaRT
Moderator
Posts: 10850
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Просмотр файлов как картинок

Post by HaRT »

В родственной теме обсуждается также просмотр .dot и .svg.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Я про эти сообщения помню.
Как буду проходиться по всему своему списку расширений, то и их сюда добавлю.
Last edited by SlashNet on Fri 14 Jan, 2022 22:34, edited 1 time in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Для предпросмотра следующих типов файлов нам будут необходимы обычные архиваторы (а точнее - разархиваторы).

.CDR - файл векторного редактора Corel Draw
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\UnxUtils\head.exe --bytes=3 "%~1" | %binpath%\UnxUtils\grep.exe -E --regexp="RI" > nul
  6.  
  7. if %errorlevel% == 0 goto oldCDRfile
  8.  
  9. %binpath%\Archivers\ZIP\unzip.exe -p "%~1" "previews\thumbnail.png" 2>nul
  10.  
  11. %binpath%\Archivers\ZIP\unzip.exe -p "%~1" "metadata\thumbnails\thumbnail.bmp" 2>nul
  12.  
  13. exit /b
  14.  
  15.  
  16.  
  17. :oldCDRfile
  18.  
  19. %binpath%\Graphics\Xn\XnView\nconvert.exe -quiet -o "%temp%\tmpcnv.png" -clevel 0 -out png "%~1"
  20.  
  21. type "%temp%\tmpcnv.png" 2>&0
  22.  
  23. del /q "%temp%\tmpcnv.png" > nul
  24.  
  25. exit /b
Вызывается, как обычно: view:< CDRview.cmd "!\!.!"
Используется автоопределение формата файла.
В случае предпросмотра файла старого формата - будет показана маленькая превьюшка размером 96*96 (если она присутствует в файле).
Файлы более свежих форматов содержат превьюшки значительно лучшего качества.


.XPS - Неудавшаяся попытка Майкрософт придумать PDF
Самый простой способ заглянуть в файл - следующий:

Code: Select all

view:< unzip.exe -p "%~1" "Documents\1\Metadata\Page1_Thumbnail.JPG"
Конечно, превьюшка содержащаяся в файле слишком мелкая и некачественная, но как получше рассмотреть первую страницу - напишу немного ниже.


.PPTX, .PPSX - PowerPoint презентация
В файле, обычно, содержится превьюшка небольших размеров. Чаще всего это JPEG-файл, реже - WMF. Во втором случае у меня используется дополнительная утилитка NConvert от XnView для конвертации картинки в растровый формат (её, думаю, вполне можно заменить чем-нибудь аналогичным). Так же и с ZIP-архиватором - тут (по историческим причинам) используется pkzipc.exe, но можно использовать и аналогичный.
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\Archivers\ZIP\pkzipc.exe -Silent -NoZipExtension -print="%temp%\temp_thumb.jpg" "%~1" "docProps\thumbnail.jpeg" 2>nul 1>nul
  6.  
  7. if exist "%temp%\temp_thumb.jpg" goto showPPTXpic
  8.  
  9. %binpath%\Archivers\ZIP\pkzipc.exe -Silent -NoZipExtension -print="%temp%\temp_thumb.wmf" "%~1" "docProps\thumbnail.wmf" 2>nul
  10.  
  11. %binpath%\Graphics\Xn\XnView\nconvert.exe -quiet -o "%temp%\temp_thumb.jpg" -q 100 -out jpeg "%temp%\temp_thumb.wmf" 2>nul 1>nul
  12.  
  13. if exist "%temp%\temp_thumb.jpg" goto showPPTXpic
  14.  
  15. echo !!! No Preview
  16.  
  17. exit /b
  18.  
  19. :showPPTXpic
  20.  
  21. type "%temp%\temp_thumb.jpg"
  22.  
  23. del /q "%temp%\temp_thumb.jpg" 2>nul
  24.  
  25. del /q "%temp%\temp_thumb.wmf" 2>nul
  26.  
  27. exit /b
Вызывается, как обычно: view:< PPTXpreview.cmd "!\!.!"


.CBR и .CBZ - близнецы-братья представляющие собой архив rar или zip с картинками. Используются, обычно, для комиксов, но, нередко и для сканов других печатных изданий. Конечно, можно зайти в такой файл вручную и просмотреть изображения обычным способом. Но для просмотра первой по списку картинки (обычно это обложка печатного издания) можно использовать следующий командный файл (используется автоопределение типа файла, так как нередко расширения бывают перепутаны):
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\UnxUtils\head.exe --bytes=2 "%~1" | %binpath%\UnxUtils\grep.exe "Ra" > nul
  6.  
  7. if %errorlevel% == 0 goto CBRfile
  8.  
  9.  
  10.  
  11. :CBZfile
  12.  
  13. chcp 866 > nul
  14.  
  15. for /f "delims=" %%b in ('%binpath%\Archivers\ZIP\unzip.exe -l "%~1" ^| %binpath%\UnxUtils\grep.exe -E --regexp=".jpg|.jpeg|.png|.gif|.webp" ^| sort /+31 ^| %binpath%\UnxUtils\head.exe --lines=1 ^| %binpath%\UnxUtils\tail.exe --bytes=+29') do %binpath%\Archivers\ZIP\unzip.exe -p "%~1" "%%b"
  16.  
  17. exit /b
  18.  
  19.  
  20.  
  21. :CBRfile
  22.  
  23. chcp 866 > nul
  24.  
  25. for /f "delims=" %%b in ('%binpath%\Archivers\RAR\Rar_400.exe v "%~1" ^| %binpath%\UnxUtils\grep.exe -E --regexp=".jpg|.jpeg|.png|.gif|.JPG|.webp" ^| sort ^| %binpath%\UnxUtils\head.exe --lines=1 ^| %binpath%\UnxUtils\tail.exe --bytes=+2') do %binpath%\Archivers\RAR\Rar_400.exe p -inul -- "%~1" "%%b"
  26.  
  27. exit /b
Вызывается, как обычно: view:< CBZpreview.cmd "!\!.!"
Архиватор RAR тут используется старой версии (4.00), так как в новых версиях архиватора слегка изменился формат вывода списка файлов, а руки у меня так и не дошли переделать батник. :pardon:


.EMZ - gzip-нутый emf-файл
Не помню где мне попались эти файлы, но пусть будут для коллекции.
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\Archivers\7ZIP\7za.exe e "%~1" -so > "%temp%\temp_thumb.emf"
  6.  
  7. %binpath%\Graphics\Xn\XnView\nconvert.exe -quiet -o "%temp%\tmpcnv.png" -clevel 0 -out png "%temp%\temp_thumb.emf"
  8.  
  9. type "%temp%\tmpcnv.png"
  10.  
  11. del /q "%temp%\tmpcnv.png"
  12.  
  13. del /q "%temp%\temp_thumb.emf"
  14.  
  15. exit /b

.3DXML - трехмерная модель
Файл попался вместе с каким-то просмотрщиком 3D-моделей.

Code: Select all

view:< unzip.exe -p "!\!.!" "Preview2D.png"

.STA - сейвстейт эмулятора blueMSX

Code: Select all

view:< unzip.exe -p "!\!.!" "screenshot.bmp"

.FB3 - наследник формата электронных книг FB2
(кто-нибудь видел книги в этом формате кроме образца на сайте автора?)

Code: Select all

view:< unzip.exe -p "!\!.!" "cover.jpg"
Last edited by SlashNet on Sun 13 Feb, 2022 21:45, edited 4 times in total.
User avatar
HaRT
Moderator
Posts: 10850
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Просмотр файлов как картинок

Post by HaRT »

Правильно ли я понимаю, что технически возможно скомпоновать общий скрипт, который будет анализировать расширение и выдавать картинку для любого из перечисленных типов файлов?
Такой скрипт было бы удобно использовать «широким кругам пользователей».
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

HaRT wrote: Sat 15 Jan, 2022 16:21 Правильно ли я понимаю, что технически возможно скомпоновать общий скрипт,
У меня сейчас так и есть (так удобнее вносить правки или добавлять новые форматы). Сюда просто выдёргиваю более-менее причёсанные куски относящиеся к тому или иному типу файлов. Первая версия выглядела именно так как показано в этом посте.
Но на данный момент этот батник жутко непричёсан, с кучей закоментированных строк от предыдущих решений и неиспользуемых секций.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Гостей встречают по одёжке, а книжки - по обложке.
Поэтому следующие утилитки нам позволят увидеть обложку или первую страницу электронных документов (что тоже бывает полезно).

Для .PDF и .XPS/.OXPS (как и обещал ранее) можно воспользоваться небольшой, но отлично работающей программой MuPDF.
Кстати, тоже умеет извлекать внедрённые картинки и текст.
  1. @echo off
  2.  
  3. D:\Soft\_Tools_\Textual\muPDF\mutool.exe draw -w 1024 -h 912 -A 8 -o "%temp%\temp_thumb.png" "%~1" 1 2>nul
  4.  
  5. type "%temp%\temp_thumb.png"
  6.  
  7. del /q "%temp%\temp_thumb.png"
  8.  
  9. exit /b

Аналогично посмотреть первую страницу можно и у .DJVU файлов.
Подойдёт для этих целей программа ddjvu (DjVu decompression utility) которую можно взять из пакета DjVuLibre.
Работает с приемлемой скоростью.
  1. @echo off
  2.  
  3. D:\Soft\_Tools_\Textual\DjVuLibre\ddjvu.exe -format=tiff -size=900x900 -aspect=yes -page=1 "%~1" "%temp%\temp_pic.tiff"
  4.  
  5. type "%temp%\temp_pic.tiff"
  6.  
  7. del /q "%temp%\temp_pic.tiff"
  8.  
  9. exit /b
или вообще можно свести к одиночной комстроке:
view:<D:\Soft\_Tools_\Textual\DjVuLibre\ddjvu.exe -format=pnm -size=900x900 -aspect=yes -page=1 "!\!.!" -

В качестве альтернативы можно воспользоваться программой djvudecode из пакета DjVuSmall.



Раз можно посмотреть на пдф-ки, значит можно посмотреть и на .DVI-файлы (это те которые создаются пакетом программ TeX, LaTeX и т.п.)
Поможет в этом деле программа dvipdfmx из пакета MiKTeX (есть portable-версия). Но пакет большой, так что смысл его ставить только если действительно этим занимаетесь. А выдернуть из него только те файлы, которые нужны для утилитки - у меня не вышло.
  1. @echo off
  2.  
  3. D:\miktex-portable\texmfs\install\miktex\bin\x64\dvipdfmx.exe -o "%temp%\temp_dvi.pdf" -s 1 -q "%~1" 2>nul
  4.  
  5. D:\Soft\_Tools_\Textual\muPDF\mutool.exe draw -w 1024 -h 912 -A 8 -o "%temp%\temp_thumb.png" "%temp%\temp_dvi.pdf" 1 2>nul
  6.  
  7. type "%temp%\temp_thumb.png"
  8.  
  9. del /q "%temp%\temp_dvi.pdf"
  10.  
  11. del /q "%temp%\temp_thumb.png"
  12.  
  13. exit /b
Дополнительное преобразование через пдф пришлось делать, так как рендер напрямую в пнг выдавал слишком странные результаты.


Что насчёт электронных книг? На их обложки тоже можно посмотреть.
Для книг .FB2 существует программа извлечения изображений из файлов данного формата fb2bin (кстати, её возможно прикрутить к МультиАрку).
Основная сложность в том что файл, который является обложкой, не всегда имеет одно и то же название. Обычно это "cover.jpg", но нередко попадаются книги в которых файл обложки обозван как попало.

Поэтому, использовать fb2bin для просмотра обложек можно, но решение не будет универсальным:
  1. @echo off
  2.  
  3. mkdir "%TMP%\fb2cvr"
  4.  
  5. D:\Soft\_Tools_\Textual\FB\fb2bin.exe -x --base-dir="%TMP%\fb2cvr" "%~1" cover.jpg
  6.  
  7. type "%TMP%\fb2cvr\cover.jpg"
  8.  
  9. rmdir /q /s "%TMP%\fb2cvr"
  10.  
  11. exit /b

Лично для себя я написал скрипт на Python 3.7, которым возможно определить и извлечь файл, который используется в качестве обложки (например:<coverpage><image l:href="#cb_120092big.jpg"/></coverpage>). Исключение составляют только слишком уж криво составленные книги, где обложка тупо вставлена в основной текст.
  1. @echo off
  2.  
  3. python D:\Soft\_Tools_\Textual\FB\PythScripts\fb2Extractor.py covr "%~1" "%temp%\covr.tmp"
  4.  
  5. if %errorlevel% == 1 exit /b
  6.  
  7. if not exist "%temp%\covr.tmp" copy /b D:\Soft\_Tools_\Textual\FB\FB2_NoCover.png "%temp%\covr.tmp" 2>nul 1>nul
  8.  
  9. type "%temp%\covr.tmp"
  10.  
  11. del /q "%temp%\covr.tmp" > nul
  12.  
  13. exit /b
fb2Extractor.rar
скрипт на Python 3.7 для извлечения изображений из FB2-книг.
(14.47 KiB) Downloaded 130 times
В комплекте прилагается картинка, которая подставляется, если обложки у файла нет.


Аналогичная ситуация и с книгами .EPUB.
Вроде обычный zip-архив, но файл с обложкой может располагаться и называться как угодно. Чтоб узнать название необходимо распарсить пару файлов (первый чтоб узнать где находится второй файл, а во втором уже и смерть Кощеева написано какой файл изображения нам нужен). К счастью, на этот раз мне не пришлось вспоминать программирование - я нашёл готовое решение, но тоже на Питоне - epub-thumbnailer.
  1. @echo off
  2.  
  3. python D:\Soft\_Tools_\Textual\eBooks\epub-thumbnailer\epub-thumbnailer.py "%~1" "%temp%\covr.png" 800 >nul
  4.  
  5. if not exist "%temp%\covr.png" copy /b %binpath%\Textual\eBooks\ePUB_NoCover.png "%temp%\covr.png" 2>nul 1>nul
  6.  
  7. type "%temp%\covr.png"
  8.  
  9. del /q "%temp%\covr.png" > nul
  10.  
  11. exit /b

Теоретически возможно извлекать обложки и из книг .LIT и .MOBI - есть распаковщики этих форматов, но у меня таких файлов почти нет и как и желания писать парсер для извлечения названия нужного файла с обложкой.
Last edited by SlashNet on Sun 13 Feb, 2022 22:02, edited 3 times in total.
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Чем наполнены электронные книги? Буквами! Разных форм и размеров, чему способствует разнообразие шрифтов.
Их то и будем разглядывать.

С векторными шрифтами (.TTF, .TTC, .OTF, .PFB) поможет обычный ImageMagick.
Но, как говорится, есть нюанс. Если просто скормить файл шрифта утилите и попросить его сконвертировать в изображение, то на выходе мы получим довольно неплохой результат, но не совсем идеальный:
  1. @echo off
  2.  
  3. D:\Soft\_Tools_\Graphics\ImageMagick\convert.exe -quality 50 "%~1" "%temp%\temp_thumb.png"
  4.  
  5. type "%temp%\temp_thumb.png"
  6.  
  7. del /q "%temp%\temp_thumb.png"
  8.  
  9. exit /b
BauhausMediumC_[LCEU-20976].png

Что же меня не устраивало в полученном результате? А то что я не вижу кириллицы.
Поэтому батник было решено усложнить, благодаря возможности ImageMagick писать на картинках всякие глупости.
  1. @echo off
  2.  
  3. set srcpic="%binpath%\Graphics\Thumbnailer\blank_preview.png"
  4.  
  5. rem в качестве "холста" я использую заранее приготовленную прямоугольную картинку 1500x400 залитую белым цветом.
  6.  
  7. set thmbtext=В чащах юга жил бы цитрус? Quick brown fox!
  8.  
  9. %binpath%\Graphics\ImageMagick\convert.exe -antialias -pointsize 24 -font "Consolas" -draw "text 800,20 '%~nx1'" -draw "line 800,22 1100,22" %srcpic% "%temp%\tmpcnv.bmp"
  10.  
  11. %binpath%\Graphics\ImageMagick\convert.exe -antialias -pointsize 30 -font %1 -draw "text 10,30 '1234567890.:,;(*!?}^)#${[&-]+@'" -draw "text 10,65 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" -draw "text 10,100 'abcdefghijklmnopqrstuvwxyz'" -draw "text 10,135 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯІЇЄ'" -draw "text 10,170 'абвгдеёжзийклмнопрстуфхцчшщьыъэюяіїє'" "%temp%\tmpcnv.bmp" "%temp%\tmpcnv.bmp"
  12.  
  13. %binpath%\Graphics\ImageMagick\convert.exe -antialias -pointsize 20 -font %1 -draw "text 10,205 '12'" -draw "text 10,235 '18'" -draw "text 10,271 '24'" -draw "text 10,319 '36'" -draw "text 10,379 '48'" "%temp%\tmpcnv.bmp" "%temp%\tmpcnv.bmp"
  14.  
  15. %binpath%\Graphics\ImageMagick\convert.exe -antialias -pointsize 12 -font %1 -draw "text 40,205 '%thmbtext%'" -pointsize 18 -draw "text 40,235 '%thmbtext%'" -pointsize 24 -draw "text 40,271 '%thmbtext%'" -pointsize 36 -draw "text 40,319 '%thmbtext%'" -pointsize 48 -draw "text 40,379 '%thmbtext%'" -colors 16 +dither "%temp%\tmpcnv.bmp" "%temp%\tmpcnv.png"
  16.  
  17.  
  18.  
  19. type "%temp%\tmpcnv.png"
  20.  
  21. del /q "%temp%\tmpcnv.png" > nul
  22.  
  23. exit /b
В итоге результат будет выглядеть примерно так:
BauhausMediumC_[LCEU-20976]_preview.png
На некотором проценте файлов вместо кириллицы будут всё же отображаться вопросительные знаки, хоть кириллица в шрифте и присутствует.

Виндовские растровые файлы шрифтов .FON тоже можно посмотреть (кстати, не все шрифты с расширением .FON являются таковыми).
В качестве дополнительных утилит пригодились FontForge и bdf2bmp, так как используется двойное преобразование (+ всё тот же ImageMagick для увеличения итоговой картинки в 2 раза, чтоб не щуриться).
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\Font\FontForge\bin\fontforge.exe -lang=ff -c "Open($1); Generate($2)" "%~1" %binpath%\Font\BDF2BMP\tmp.bdf 2>nul
  6.  
  7. copy %binpath%\Font\BDF2BMP\tmp-*.bdf %binpath%\Font\BDF2BMP\tmp.bdf >nul
  8.  
  9. %binpath%\Font\BDF2BMP\bdf2bmp.exe -s1 %binpath%\Font\BDF2BMP\tmp.bdf %binpath%\Font\BDF2BMP\tmp.bmp >nul
  10.  
  11. D:\Soft\_Tools_\Graphics\ImageMagick\convert.exe %binpath%\Font\BDF2BMP\tmp.bmp -scale 200%% %binpath%\Font\BDF2BMP\tmp.bmp
  12.  
  13. type "%binpath%\Font\BDF2BMP\tmp.bmp" 2>nul
  14.  
  15. del /q "%binpath%\Font\BDF2BMP\tmp.bmp" 2>nul
  16.  
  17. del /q "%binpath%\Font\BDF2BMP\tmp*.bdf" 2>nul
  18.  
  19. exit /b
Результат:
Terminal.png
Terminal.png (2.46 KiB) Viewed 5293 times

Из предыдущего раздела понятно, что смотреть также можно и растровые .BDF файлы (используются в Линуксах)
Небольшим минусом является то что программа bdf2bmp показывает сразу все глифы. Поэтому для объёмных BDF-файлов может сгенерироваться длинная портянка.

Картинкогенератор выглядит немного попроще:
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. %binpath%\Font\BDF2BMP\bdf2bmp.exe -s1 "%~1" %binpath%\Font\BDF2BMP\tmp.bmp >nul
  6.  
  7. D:\Soft\_Tools_\Graphics\ImageMagick\convert.exe %binpath%\Font\BDF2BMP\tmp.bmp -scale 200%% %binpath%\Font\BDF2BMP\tmp.bmp
  8.  
  9. type "%binpath%\Font\BDF2BMP\tmp.bmp" 2>nul
  10.  
  11. del /q "%binpath%\Font\BDF2BMP\tmp.bmp" 2>nul
  12.  
  13. exit /b
daggerbdf.png
daggerbdf.png (2.41 KiB) Viewed 5293 times
Last edited by SlashNet on Sun 13 Feb, 2022 21:48, edited 1 time in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Просмотр файлов как картинок

Post by citRiks »

Тема гениальная !
Здорово что нашелся энтузиаст который это пилит.
Небольшое пожелание лишь в том, чтобы все скрипты/настройки фара можно было бы скачать одним архивом
В идеале чтобы был репозиторий в ГитХабе.
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Для предпросмотра первой страницы файлов DjVu обнаружил утилитку пошустрее: ddjvu из DjVuLibre.
Описание добавил в сообщение выше: viewtopic.php?p=169709#p169709
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Небольшой раздел с пометкой "странное". :)

Просмотр обложек игр для некоторых эмулируемых платформ от Nintendo.
Просматриваемая обложка скачивается с сайта GameTDB c помощью утилитки curl (можно приспособить любую другую аналогичную программку)

Необходимые программы для следующих типов файлов:
NintendoDS (.nds): head, tail
Nintendo3DS (.3ds,.cia) tail, grep, ctrtool (https://github.com/3DSGuy/Project_CTR/releases)
Nintendo GameCube (.gcm) head
Образы дисков для GameCube часто имеют расширение .iso, но это тот же .gcm-файл. Стабильно работающего алгоритма по автоопределению .iso являющегося образом GC-игры пока не придумал.

В тексте командного файла есть комментарии с различными комбинациями параметров скачиваемых изображений
( HQ-версия обложки на некоторых играх даёт ощутимую задержку перед отображением).
  1. @echo off
  2.  
  3. set binpath=D:\Soft\_Tools_
  4.  
  5. if /i "%~x1" EQU ".nds" goto DSfile
  6.  
  7. if /i "%~x1" EQU ".3ds" goto 3DSfile
  8.  
  9. if /i "%~x1" EQU ".cia" goto 3DSfile
  10.  
  11. if /i "%~x1" EQU ".gcm" goto GCMfile
  12.  
  13. exit /b
  14.  
  15.  
  16.  
  17. :DSfile
  18.  
  19. set rext=ds
  20.  
  21. rem M+jpg; HQ+jpg; S+png;
  22.  
  23. set ctype=M
  24.  
  25. set iext=jpg
  26.  
  27. for /F "usebackq delims=" %%i in (`%binpath%\UnxUtils\head.exe "%~1" --bytes=16 ^| %binpath%\UnxUtils\tail.exe --bytes=4`) do @set txtid=%%i
  28.  
  29. goto getcovr
  30.  
  31.  
  32.  
  33. :3DSfile
  34.  
  35. set rext=3ds
  36.  
  37. rem M+jpg; HQ+jpg
  38.  
  39. set ctype=M
  40.  
  41. set iext=jpg
  42.  
  43. rem https://github.com/3DSGuy/Project_CTR/releases
  44.  
  45. for /F "usebackq delims=" %%i in (`%binpath%\Emulation\_Utils\3DSROMInfo\ctrtool.exe "%~1" ^| %binpath%\UnxUtils\grep.exe --after-context=20 "Header:                 NCCH" ^| %binpath%\UnxUtils\grep.exe "Product code:" ^| %binpath%\UnxUtils\tail.exe --bytes=5`) do @set txtid=%%i
  46.  
  47. goto getcovr
  48.  
  49.  
  50.  
  51. :GCMfile
  52.  
  53. set rext=wii
  54.  
  55. rem " "+png; 3D+png; fullHQ+png
  56.  
  57. set ctype=
  58.  
  59. set iext=png
  60.  
  61. for /F "usebackq delims=" %%i in (`%binpath%\UnxUtils\head.exe "%~1" --bytes=6`) do @set txtid=%%i
  62.  
  63. goto getcovr
  64.  
  65.  
  66.  
  67.  
  68.  
  69. :getcovr
  70.  
  71. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/US/%txtid%.%iext%
  72.  
  73. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  74.  
  75. if %fsize% NEQ 0 goto nshowcover
  76.  
  77. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/EN/%txtid%.%iext%
  78.  
  79. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  80.  
  81. if %fsize% NEQ 0 goto nshowcover
  82.  
  83. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/JA/%txtid%.%iext%
  84.  
  85. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  86.  
  87. if %fsize% NEQ 0 goto nshowcover
  88.  
  89. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/RU/%txtid%.%iext%
  90.  
  91. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  92.  
  93. if %fsize% NEQ 0 goto nshowcover
  94.  
  95. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/FR/%txtid%.%iext%
  96.  
  97. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  98.  
  99. if %fsize% NEQ 0 goto nshowcover
  100.  
  101. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/DE/%txtid%.%iext%
  102.  
  103. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  104.  
  105. if %fsize% NEQ 0 goto nshowcover
  106.  
  107. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/ES/%txtid%.%iext%
  108.  
  109. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  110.  
  111. if %fsize% NEQ 0 goto nshowcover
  112.  
  113. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/IT/%txtid%.%iext%
  114.  
  115. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  116.  
  117. if %fsize% NEQ 0 goto nshowcover
  118.  
  119. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/NL/%txtid%.%iext%
  120.  
  121. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  122.  
  123. if %fsize% NEQ 0 goto nshowcover
  124.  
  125. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/PT/%txtid%.%iext%
  126.  
  127. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  128.  
  129. if %fsize% NEQ 0 goto nshowcover
  130.  
  131. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/AU/%txtid%.%iext%
  132.  
  133. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  134.  
  135. if %fsize% NEQ 0 goto nshowcover
  136.  
  137. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/SE/%txtid%.%iext%
  138.  
  139. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  140.  
  141. if %fsize% NEQ 0 goto nshowcover
  142.  
  143. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/DK/%txtid%.%iext%
  144.  
  145. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  146.  
  147. if %fsize% NEQ 0 goto nshowcover
  148.  
  149. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/NO/%txtid%.%iext%
  150.  
  151. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  152.  
  153. if %fsize% NEQ 0 goto nshowcover
  154.  
  155. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/FI/%txtid%.%iext%
  156.  
  157. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  158.  
  159. if %fsize% NEQ 0 goto nshowcover
  160.  
  161. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/KO/%txtid%.%iext%
  162.  
  163. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  164.  
  165. if %fsize% NEQ 0 goto nshowcover
  166.  
  167. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/ZHCN/%txtid%.%iext%
  168.  
  169. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  170.  
  171. if %fsize% NEQ 0 goto nshowcover
  172.  
  173. %binpath%\Net\curl\bin\curl.exe -s -o "%temp%\rgamethumb.%iext%" https://art.gametdb.com/%rext%/cover%ctype%/ZHTW/%txtid%.%iext%
  174.  
  175. if exist "%temp%\rgamethumb.%iext%" for %%i in ("%temp%\rgamethumb.%iext%") do set fsize=%%~zi
  176.  
  177. if %fsize% NEQ 0 goto nshowcover
  178.  
  179. echo !!! No Cover
  180.  
  181. del /q "%temp%\rgamethumb.%iext%"
  182.  
  183. exit /b
  184.  
  185.  
  186.  
  187. :nshowcover
  188.  
  189. type "%temp%\rgamethumb.%iext%"
  190.  
  191. del /q "%temp%\rgamethumb.%iext%"
  192.  
  193. exit /b
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Просмотр файлов как картинок

Post by SlashNet »

Предпросмотр STL-файлов для 3D-печати.

https://github.com/unlimitedbacon/stl-thumb

По-умолчанию, создаётся картинка размером 1024×768:

Code: Select all

view:< stl-thumb.exe "!\!.!" -
но можно воспользоваться другим подходящим размером итоговой картинки (например, 800×800 пикс.):

Code: Select all

view:< stl-thumb.exe --size 800 "!\!.!" -
Взято отсюда
Last edited by SlashNet on Sun 10 Mar, 2024 15:00, edited 3 times in total.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
Post Reply

Return to “Операционные системы, командные оболочки и прочее”