Перетворення будь-якого файлу зображення в ASCII-мистецтво в PowerShell

Це щось досить круте, що я повинен поділитися. За допомогою PowerShell можна перетворювати будь-які файли зображень, JPG або PNG, у звичайний текстовий файл, який можна відкрити в Блокноті. Завдяки PowerTips.

Ось код, починаючи з функції.

Функція Convert-ImageToAsciiArt {param ([Параметр (обов'язковий)] [String] $ Path, [ValidateRange (20,20000)] [int] $ MaxWidth = 80, # Character висота: ширина співвідношення [float] $ ratio = 1.5) # малюнок завантаження функціональність Add-Type -AssemblyName System.Drawing # символів від темного до світла $ characters = '$ # H & @ * +;: - ,. '.ToCharArray () $ c = $ characters.count # завантажуйте зображення та отримуйте розмір зображення $ image = [Малюнок.Зображення] :: FromFile ($ path) [int] $ maxheight = $ image.Height / ($ image.Width) / $ maxwidth) / $ ratio # малюнок зображення на бітовому малюнку з потрібним розміром $ bitmap = new-object Малювання.Bitmap ($ image, $ maxwidth, $ maxheight) # використовує конструктор рядків для зберігання символів [System.Text. StringBuilder] $ sb = "# # приймає кожну піксельну лінію ... для ([int] $ y = 0; $ y -lt $ bitmap.Height; $ y ++) {# приймає кожен стовпчик пікселів ... для ([int $ x = 0; $ x -lt $ bitmap.Width; $ x ++) {# вивчити піксель $ color = $ bitmap.GetPixel ($ x, $ y) $ brightness = $ color.GetBrightness () # вибрати символ найкраще відповідає яскравості пікселів [int] $ offset = [Math] :: Поверх ($ яскравість * $ c) $ ch = $ символів [$ offset] if (-не $ ch) {$ ch = $ characters [-1] } # додати символ до рядка $ null = $ sb.Append ($ ch)} # додати новий рядок $ null = $ sb.AppendLine ()} # очистити і повернути рядок $ image.Dispose () $ sb.ToString ( )}

Тоді, як використовувати його для виклику функції, генерувати ASCII-файл і відображати його.

$ Path = "folderimagefile.jpg" $ OutPath = "$ env.tempasciiart.txt" Конвертувати-ImageToAsciiArt -Path $ Path -MaxWidth 150 | Встановити вміст -Path $ OutPath -кодування UTF8 Invoke-Item -Path $ OutPath

Тепер давайте йому тест на Еліаса Петтерсона, новобранець року в НХЛ. Якщо ви не знаєте, хто він, ось він.

Еліас Петтерсон

А ось його версія AscII, створена PowerShell.

Версія AscII Еліаса Петтерсона

Досить вражаючий.

Вгадайте, що це веселіше? Дивитися Рік Астлі співає і танцює в режимі AscII.

джерело

Ключові слова:

залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.