вентилятор
Хорошего настроения!

Отображаем картинку с помощью символов в консоли ( на языке C# )



В этой статье мы рассмотрим, как отобразить картику в консоли с помощью символов ASCII. Для этого мы будем использовать язык программирования C# и библиотеку .NET Framework. Эта техника, известная как ASCII-арт или символьное искусство, была популярна в 70-х годах прошлого века и используется до сих пор для создания различных графических изображений в консольном режиме.


Стоит отметить, что не каждая фотография подойдет для отображения в консоли при помощи символов ASCII. Сложные изображения с множеством деталей и цветов будут трудночитаемыми и требовать большого количества символов для достаточно точного отображения. Тем не менее, некоторые изображения, такие как логотипы, символы и другие простые графические элементы, программа сможет превратить в эффектные символьные изображения.





Создадим проект типа "Консольное приложение (.NET Framework)".


Для данного проекта нам потребуется библиотека System.Drawing.


Нажмём правой кнопкой мыши на проект в обозревателе решений (Solution Explorer). В выпадающем меню выберем пункт "Добавить" (Add), а затем "Ссылку на сборку" (Reference). В окне "Управление ссылками" (Reference Manager) найдём вкладку ".NET" и выберем ее. Найдём в списке сборку System.Drawing и отметьте ее флажком. Нажмём кнопку "ОК" (OK), чтобы добавить ссылку на библиотеку System.Drawing в проект.


После выполнения этих шагов мы сможем использовать классы и методы из библиотеки System.Drawing в нашем проекте Visual Studio.


Чтобы использовать классы и методы из библиотеки System.Drawing в коде нашего проекта, необходимо добавить директиву


 using System.Drawing; 

в начало файла с нашим кодом. Это позволит компилятору понимать, что мы используем классы из этой библиотеки и подключить ее в процессе компиляции.





Напишем программу


static void Main(string[] args)
{
    // Путь до изображения
    string imagePath = "C:\\code_enjoy.jpg";

    // Загружаем изображение
    Bitmap bitmap = new Bitmap(imagePath);

    // Вычисляем ширину и высоту консоли
    int consoleWidth = Console.WindowWidth - 1;
    int consoleHeight = Console.WindowHeight - 1;

    // Определяем ширину и высоту блока пикселей,
    // которые будут заменены одним символом в консоле.
    int blockWidth = bitmap.Width / consoleWidth;
    int blockHeight = bitmap.Height / consoleHeight;

Программа на C# - Изображение из символов в консоли

Программа на C# - Изображение из символов в консоли 2
Программа на C# - Изображение из символов в консоли 3

// Установим цвет консоли в зависимости от интенсивности
ConsoleColor consoleColor;

Программа на C# - Изображение из символов в консоли 4
           Console.ForegroundColor = consoleColor;

           // Нарисуем символ для этого блока
           Console.Write(character);

       }
       
       Console.WriteLine();

    }
}




Данная программа загружает изображение в формате JPG, преобразует его пиксели в символы ASCII и отображает результат на экране консоли. Она проходит по каждому блоку пикселей изображения, вычисляет среднюю интенсивность пикселей, выбирает символ для представления блока в зависимости от интенсивности, а затем выводит его на экран консоли с установленным цветом фона в зависимости от интенсивности блока. Результатом программы является ASCII-арт изображения, где каждый блок пикселей заменен соответствующим символом.


Рассмотрим примеры работы программы.


Изображение:


Исходное изображение


Результат:


Исходное изображение (результат)




Изображение:


Исходное изображение 2


Результат:


Исходное изображение 2 (результат)

Чтобы пропорции исходного изображения сохранялись, можно использовать формулу:


imageWidth = imageHeight * consoleWidth / consoleHeight

Где imageWidth и imageHeight - ширина и высота исходного изображения, а consoleWidth и consoleHeight - ширина и высота консоли соответственно.





В заключение, представление изображения символами на экране консоли - это интересный способ визуализации графической информации. В этой статье мы рассмотрели, как можно реализовать такое представление на языке C# с помощью простых алгоритмов и библиотеки System.Drawing. Несмотря на то, что вывод изображений в консоли не является оптимальным способом работы с графикой, он может быть полезен в различных задачах, таких как создание ASCII-графики, демонстрация обработки изображений и многих других.


Чтобы не набирать данный проект вручную, можете купить уже готовый за 600 499 рублей.


Купить проект данной программы

Стоимость: 600 499 рублей.



12-05-2023 в 10:29:32





Поддержать сайт:


Похожая статья:

Пишем Скриншотер на C#

Сегодня мы начнём создавать собственный сриншотер на языке программиро...

Категория: C#  Подкатегория: -
Дата: 09-10-2022 в 16:42:23 3



Оставить коментарий:



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально:




Нажимая кнопку Отправить, Вы соглашаетесь с политикой конфиденциальности сайта.