DeaD_MoroZ Опубликовано 9 мая, 2009 Жалоба Поделиться Опубликовано 9 мая, 2009 (изменено) Доброго времени суток! Хочу написать вот такую небольшую прогу: Пользователь выбирает любую картинку, а программка делает с ней такой эффект, чтобы картинка сначала "сгнила", а потом превратилась в труху. Пишу на языке Си под DOS в Borland С++ 3.1. Под винду писать не умею пока. :D Вопрос 1: Как вставить картинку в прогу? Какая функция это делает? (если такая есть для ДОСа). Как я понимаю, должна быть такая функция, которая берёт картинку и вставляет её в массив в формате 3 байта на пиксел (R-G-B).. Вопрос 2: Чтобы сделать такой эффект, мне сказали пользоваться фильтрацией изображения и увеличением контраста. Так вот, если кто подскажет, где найти информацию об алгоритмах данных эффектов, буду оч признателен. :no: Изменено 9 мая, 2009 пользователем DeaD_MoroZ Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 9 мая, 2009 Жалоба Поделиться Опубликовано 9 мая, 2009 (изменено) DeaD_MoroZ: "В любви ничего невозможного нет." Кажется, Пьеха пела... Даже в любви к DOS. Про DOS даже песни есть... :) Однако под DOS поддерживается стандартно максимум 16 цветов, хотя можно найти специальные библиотеки функций, написанные энтузиастами DOS, расширяющие количество цветов до 256 и даже до 65536. Стоит ли их искать и в них разбираться - другой вопрос. Тем более, что все это было рассчитано под 16-битную DOS с ограничением размера массива в 64 килобайта. А на современном мониторе далеко не 64 тысячи точек, так что тут возникают дополнительные сложности разбиения картинки на части, впрочем, вполне преодолимые, хотя и не без некоторых усилий. Функция вывода рисунка есть и в стандартном C под DOS: putimage. Однако стандартно она тоже рассчитана на режим в 16 цветов, если больше - надо искать такие библиотеки, в которых есть ее аналог или дописывать эту библиотеку самому по образу и подобию имеющихся в библиотеке функций. Преобразовать картинку в массив, используемый в функции вывода рисунка, нетрудно - берем спецификацию формата BMP и превращаем каждый байт рисунка (он дает яркость одного из трех базовых цветов пиксела, поэтому обычно на пиксел расходуется в BMP три байта) в несколько бит, полагающихся нашей функции вывода рисунка, то есть редуцируем количество цветов до поддерживаемого функциями нашей библиотеки, после чего склеиваем эти биты в байты массива для функции вывода рисунка. Насчет "гниения картинки" я не совсем понял, видимо, имеется в виду уменьшение интенсивности цветов, это просто - интенсивность каждого базового цвета каждого пиксела кодируется несколькими битами, представляющими собой число, выражающее интенсивность цвета. Надо просто пробегать по массиву и уменьшать эти числа, после чего выводить снова этот массив. В труху превратить несложно - постепенно прореживаем массив, заменяя всё больше его элементов нулями. Увеличение контраста тоже несложно: считаем среднее значение яркости (интенсивности цветов), затем пробегаеи по массиву, делая интенсивность цветов пикселей с яркостью меньше средней еще меньше, а большей - еще больше (по возможности). Остается единственный вопрос - надо ли вообще осваивать умение бриться топором? :D P.S. (чтоб она сгнила и превратилась в труху)На проклятие похоже :no: Изменено 9 мая, 2009 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
DeaD_MoroZ Опубликовано 10 мая, 2009 Автор Жалоба Поделиться Опубликовано 10 мая, 2009 (изменено) Тролль: Спасибо большое за содержательый ответ! :) С выводом рисунка на экран всё понятно.. Насчёт забивки байтов данных рисунка в массив - я так понял никаких функций нет, которые делают это? Ну. если нет, то придётся читать спецификацию формата и вручную выдирать :1eye: Про гниение вы правильно поняли, вроде так всё и должно быть, картнка должна терять цвет) Использовать надофильтрацию и даж есть спец. алгоритм этого дела =) На проклятие похоже Ага, точняк.. Вот такие вот задания сейчас требуют в универе на 4-м курсе :) Вообщем, полазию, почитаю. посмотрю. Что-нибудь да и получится :) P.S: эээх, надо в винде учится прогать... с этим ДОСом далеко не убежишь.. Изменено 11 мая, 2009 пользователем DeaD_MoroZ Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.