Форум программистов, компьютерный форум, киберфорум
nekit270
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Добро пожаловать, здесь я программирую бессмысленно и беспощадно

Просмотрщик изображений в командной строке

Запись от nekit270 размещена 29.12.2023 в 12:22
Показов 3218 Комментарии 6

Нет, не изображений, составленных из символов, а самых обычных, в нормальном качестве.

Как? WinAPI может многое, и если вам кажется, что что-либо невозможно, скорее всего оно станет возможным, как только вы отбросите один или несколько слоев абстракций.
Зачем? Просто так. Возможно, кто-то найдет этому применение.

Поддерживаются форматы BMP, JPG, PNG, GIF и TIFF, поэтому просмотрщик без особых проблем справится с большинством изображений (если вы, конечно, не ярый фанат WEBP и не держите у себя только его).

Как это устроено:
  1. Вызовом GetConsoleWindow программа получает дескриптор консольного окна
  2. С помощью Bitmap.GetHbitmap программа получает дескриптор HBITMAP изображения
  3. С помощью функций CreatePatternBrush и FillRect происходит отрисовка иображения в окне

Синтаксис командной строки просмотрщика:
Code
1
2
3
4
5
6
7
Использование: civ <файл> [длина] [ширина] [-p]
 
Просмотр изображений в консоли.
 
        [длина]     Длина изображения. Если равна 0, использовать оригинальную длину.
        [ширина]    Ширина изображения. Если равна 0, использовать оригинальную ширину.
        [-p]        Ждать нажатия клавиши после завершения (чтобы изображение не затерлось приглашением консоли)
Исходный код и скомпилированный EXE выложены на GitHub. Код распространяется по лицензии MIT, что позволяет использовать его даже в коммерческих продуктах.

Пример работы просмотрщика:
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 397
Размер:	566.4 Кб
ID:	8438
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для Fedor92
    Зачем? Просто так. Возможно, кто-то найдет этому применение.
    Годная вещица. С терминала IDE её можно заюзать для просмотра удалённых файлов?
    Запись от Fedor92 размещена 29.12.2023 в 12:56 Fedor92 вне форума
  2. Старый комментарий
    В вашу копилку "Зачем? Просто так. Возможно, кто-то найдет этому применение."

    я когда-то (лет 15-20 назад) использовал shimgvw.dll для печати изображений на принтере и, кажется, там была возможность визуализации изображений (не гарантирую, давно это было)
    Запись от sqltd1 размещена 29.12.2023 в 13:46 sqltd1 вне форума
  3. Старый комментарий
    Аватар для nekit270
    Цитата Сообщение от Fedor92
    Годная вещица. С терминала IDE её можно заюзать для просмотра удалённых файлов?
    Думаю, зависит от IDE, я проверял работоспособность только в стандартной консоли, как поведет себя GetConsoleWindow в других местах - неизвестно
    Запись от nekit270 размещена 29.12.2023 в 22:56 nekit270 вне форума
  4. Старый комментарий
    Вот вы вывели картинку в окне консоли, но в чем смыл? Зачем она там? Чтобы была?
    Что будет если свернуть окно консоли, или ввести в ней текст? Картинка затрется?
    Запись от locm размещена 02.01.2024 в 00:02 locm вне форума
  5. Старый комментарий
    Аватар для nekit270
    Цитата Сообщение от locm
    Вот вы вывели картинку в окне консоли, но в чем смыл? Зачем она там? Чтобы была?
    Что будет если свернуть окно консоли, или ввести в ней текст? Картинка затрется?
    Да, чтобы была. Об этом даже написано: "Зачем? Просто так". Если ввести текст в консоль, картинка затрется, для предотвращения этого существует опция -p.
    Запись от nekit270 размещена 05.01.2024 в 05:10 nekit270 вне форума
  6. Старый комментарий
    Аватар для AlexProgramm
    Вот это круто вообще
    Запись от AlexProgramm размещена 07.01.2024 в 01:19 AlexProgramm вне форума
 
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru