Сегодня мы начнем погружаться в промышленное программирование. К сожалению, грузить вас двоих теорией мне сразу не хочется. Лучше начнем с хардкорный практики, в ходе которой вы начнете чето понимать. В ходе мозгового штурма вам необходимо выдать проект: консольное приложение, которое переводит изображение в ASKII картинку через консоль посредством сил библиотек Qt. Для тех, кто войдет во вкус, можно добавить поддержку gif-изображений и защиту от дурака (работа с исключениями).
Правила:
- Вы можете пользоваться любыми источниками, даже взять за основу готовое решение с гита, если найдете.
- По любым вопросам, можно обращаться ко мне. Но общность ответа будет зависеть от отобщности вопроса.
- Дэдлайн я не хочу ставить, потому что сейчас надо кутить. Но если это будет писаться больше недели, то стремно.
Вам необходимо разработать приложение, которое запускается в консоле и в аргументах принимает путь к файлу - изображению. Далее файл переводится в таблицу из ASKII символов и печатается в консоли. Размеры выходного изображение могут отличаться от исходных. Исользуем Qt. Данное тз подразумевает, что вы владеете небазовыми знаниями языка С++.
Для продвинутых:
- Программа может обрабатывать gif файлы, анимируя изображение.
- Программа выдаст ошибку, если не удалось обработать изображение.
Сегодня написал этот проект и пример работы такой программы прикрепил на диск ниже. https://disk.yandex.ru/i/MpXJ_YpZXuU0VA
Хз, зачем я это написал. Если тебе удасться поштурмовать мозгом, облазить форумы в надежде найти нужный код, переписать этот код под поставленную задачу, то это круто. Также, в процессе написания этого дерьма можно тренироваться задавать правильные вопросы, правильно формулировать запросы гуглу. Получить много теории и чуть практики тоже получится, если немного порыться в документациях. Удачи!
Я не настолько тиран, чтобы просто дать зачине, которое невозможно сразу сделать. Я дам такое задание и дам напутственные слова).
- Качаем онлайн инсталлятор qt. Дам ссылку, но лучше сам найди.
- Чтобы установить это заморское ПО, понадобится VPN (ищи сам).
- В инсталлятор следуем подсказкам и устанавливаем только qt for desktop версии ±5.15.0 (6 не надо).
В главном меню тыкаемся... А хотя, разбирайтесь сами. Если что-то не получается, либо гуглим, либо я помогу.
- Сама идея перевода изображения в ASKII заключается в том, чтобы заменить каждый пиксель на символ, плотность которого пропорциональна яркости цвета пикселя (гуглим HSL). Потребуется подобрать набор символов, которые вы хотите использовать.
- Для хранения изображения рекомендую использовать класс QImage. С помощью него можно изменить размер изображения и обратиться к пикселю по координатам. А из пикселя уже получить ту самую яркость.
- Для того, чтобы работать с графикой (то есть QImage, QPixel), в .pro файле нужно подключить gui (QT += gui).
- Чтобы запустить приложение из консоли с параметрами, в функции main() нужно принять параметры argc и argv, которые и отвечают за аргументы.
Для крутых:
- Для обработки gif можно использовать QMovie. Для этого придется заменить QCoreApplication на QGuiApplication.
- Чтобы проверить, открылось ли изображение, можно использовать метод isNull(). Если он вернул истину, можно выбрасывать исключение.
Скажу, что написать это самостоятельно сразу невозможно. Поэтому спрашивайте все, с момента установки, до развертывания. Я бы мог здесь оставить исходники к тому, что я написал, но толку от этого будет мало.
В интернете есть ответы на все интересующие вас вопросы, там даже есть, скорее всего, готовые решения. ГО ПОШТУРМИМ!!!!!