Когда я учился в школе, были популярны тетрадки с фото-мозаикой на обложке. И в какой то определенный момент мне захотелось повторить тот же эффект, но уже со своим исходным изображением. Немного погуляв по интернету, я нашёл несколько готовых решений для десктопов, но некоторые были платными, а некоторые уж очень древними. Таким образом, было принято решение попробовать написать самому да и не просто так, а на телефон с Android на борту.
Для начала, что такое фото-мозаика? Это изображение, собранное из множества других, подобранных таким образом, чтобы их множество как можно чётче напоминало по очертаниям изначальное изображение.
Пример:
Как видно, части мозаики подбираются по доминирующему цвету на обрабатываемом участке исходного изображения. Таким образом сразу возникла идея алгоритма будущего приложения:
1. Разделить исходное изображение на участки.
2. Шаг за нагом идти по каждому участку и определять доминирующий цвет.
3. На место каждого участка вставлять уменьшенную картинку с таким же доминирующим.
Загвоздка была лишь в том, КАК искать доминирующий цвет. Так как я лишь начинал программировать — данная программа была чуть ли первым в жизни проектом, поэтому первым делом полез в интернет искать может есть какой супер-мега алгоритм. Погуглив немного, узнал про гистограммы и как примерно их создают. Если память не подводит, видел даже где то библиотеки для нахождения цветовой гистограммы. Но так ведь неинтересно, поэтому решил искать свое решение. В итоге пришёл к простому и чуть ли не тупому способу: искать среднее арифметическое по трем цветам из всех пикселей одного участка. Получив первые результаты, даже сам удивился, такой метод работает и совсем неплохо.
Получив заряд мотивации, приступил к написанию самой программы. В течение нескольких недель, по вечерам в свободное от университета время методом проб и ошибок программа была написана. Деплой делал сразу на телефон HTC Wildfire S с Android 2.3.3 дабы проверить работоспособность программы на слабом железе.
В последствии оказалось, что даже двух тысяч изображений в качестве “плитки” будущей мозаики мало. Чем больше материала для работы, тем лучше и чётче получается финальное изображение. С горем пополам насобирал почти 7000 картинок, и мозаики начали приобретать вполне приличный вид. Немного правок и подбора подходящего шага цикла, и программа заработала, как часы.
На этом моя цель была достигнута, следующим этапом было придать программе хоть какой-нибудь подобающий вид. Так как дизайнер из меня никакой, да и в разметке не силен, эту функцию я доверил своему товарищу по университету, который тоже интересовался разработкой под Android, Результаты его трудов приведены выше.
Когда разработка и выпиливание багов подошли к концу, началось самое интересное: регистрация и публикация в маркет. Как и предполагалось, процесс это довольно простой и ничего особенного в нем нет: сначала регистрация, подготовка всей необходимой графики для маркета, а потом уже и сама публикация. Самый волнующий момент — это те сутки ожидания пока твое приложение появится в маркете и поисковая выдача приведёт к твоему творению. Наверное это одно из самый приятных ощущений — знать, что твой, какой бы то ни был, труд доступен публике и любой может скачать и оставить комментарий. Кстати о комментариях, никогда не думал, что фидбек может быть так морально необходим. Как сейчас помню детский восторг, когда читаешь очередной отзыв, и самое классное, когда он конструктивен и даже с критикой. Критика очень помогает, в какой то степени спускает с небес на землю и заставляет смотреть на вещи с другой стороны.
Дабы наградить себя как то за труды, мы встроили в приложение рекламу, которая, как оказалось, была не такой уж прибыльной, как ожидалось. Скажу кратко, почти за год в AdMob накапало чуть больше 100$, и это при более 9000 общих загрузок и 1500 активных загрузок.
Единственное, что мы сделали для распространения — это залили приложения на Amazon Market, Samsung Apps и просто ради интереса на 4pda.
Изначально приложение задумывалось как эксперимент, а не способ заработать, поэтому мы не вкладывались ни в рекламу, ни в раскрутку. Как только загрузки перевалили за несколько тысяч, приложение начало появляться на популярных ресурсах, местами даже обозревалось. В свою очередь, это тоже не может не радовать.
Как итог, на рекламе мы ничего не заработали, зато получили опыт разработки и публикации приложения. Теперь мы оба работаем Android разработчиками, а неделю назад за программу нам предложили неплохую сумму и мы её продали.
Автор: he11c0de