Це скріншот деякого тексту, набраного в текстовому редакторі:
Це той самий текст у більшому розмірі.
Зверніть увагу на те, як видно згладжування на літерах з чіткими діагональними штрихами, як x
і z
. Ця проблема є основною причиною того, чому растрові шрифти втратили популярність до «масштабованих» форматів, таких як TrueType.
Але, можливо, це не властива проблема растрових шрифтів, як правило, як спосіб їх масштабування реалізується. Ось альтернативна візуалізація з використанням простої білінеарної інтерполяції в поєднанні з порогом .
Це плавніше, але не ідеально. Діагональні штрихи все ще кумедні, а вигнуті літери начебто c
і o
є багатокутниками. Особливо це помітно при великих розмірах.
Так є кращий спосіб?
Завдання
Напишіть програму, яка бере три аргументи командного рядка.
resize INPUT_FILE OUTPUT_FILE SCALE_FACTOR
де
- INPUT_FILE - це ім'я вхідного файлу, який вважається файлом зображення, що містить чорний текст на білому тлі. Ви можете використовувати будь-який звичайний формат растрового зображення (PNG, BMP тощо), що зручно.
- OUTPUT_FILE - ім'я вихідного файлу. Це може бути або растровий, або векторний формат зображення. Ви можете ввести колір, якщо ви робите деякий перегляд пікселів, схожий на ClearType.
- SCALE_FACTOR - це додатне значення з плаваючою комою, яке вказує на те, наскільки зображення може бути змінено. Враховуючи вхідний файл x × y px та коефіцієнт масштабування s , вихід буде мати розмір sx × sy px (округлений до цілих чисел).
Ви можете використовувати бібліотеку обробки зображень із відкритим кодом третього тижня.
Окрім коду, додайте зразки виходів вашої програми за масштабними коефіцієнтами 1,333, 1,5, 2, 3 та 4, використовуючи моє перше зображення як вхідне. Ви також можете спробувати його з іншими шрифтами, включаючи пропорційно розташовані.
Оцінка балів
Це конкурс на популярність. Виграє запис з найбільшою кількістю оновлених мінусів. У разі точного вирівнювання виграє попередній запис.
Редагувати : Термін продовжений через відсутність записів. TBA.
Виборцям рекомендується судити, головним чином, на основі того, наскільки добре виглядають вихідні зображення, і, вдруге, на простоті / елегантності алгоритму.
SCALE_FACTOR
завжди> 1?