Видеозахват-2

в 9:59, , рубрики: appstore, mobile development, видео, Работа с видео, разработка под iOS, метки: ,

imageНесложно жить в 21 веке. Еще проще получить видео-картинку с любой из камер iPhone внутри своего приложения.
Как это сделать и как это сделал я, было рассказано в статье про фруктожорку.

Воображение не остановилось на достигнутом.
Полученные фотографии можно использовать и в трехмерном мире.
Пример трехмерного объекта с плоской картинкой на боку Вы видите слева от текста.
Если не видите логотипа на изображении вазы, включите режим просмотр картинок в Вашем браузере.

Ниже я приведу пример превращения плоской картинки в GL текстуру и расскажу, как я тайком подглядывал за iOS Review Team.

Напоминаю, что iOS Review Team — это люди, которые проверяют наши приложения для одобрения в appStore.

Немножко кода

Для перевода битмап-картинки в GL текстуру достаточно одной функции.

Функция

uploadTexture

- (GLuint) uploadTexture:(UIImage*) image
{
    GLuint width = 256;
    GLuint height = 256;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    void *imageData = malloc( height * width * 4 );
    CGContextRef ctx = CGBitmapContextCreate( imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );
    CGColorSpaceRelease( colorSpace );
    CGContextClearRect( ctx, CGRectMake( 0, 0, width, height ) );
    CGContextTranslateCTM( ctx, 0, height - height );
    CGContextDrawImage( ctx, CGRectMake( 0, 0, width, height ), image.CGImage );
    GLuint texName;
    glGenTextures(1, &texName);
    glBindTexture(GL_TEXTURE_2D, texName);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);
    CGContextRelease(ctx);
    free(imageData);
///////////////////////////////////////////////////////////////    
//  а вот теперь наша текстура в нашем же openGL мире    
    glBindTexture(GL_TEXTURE_2D, texName);
///////////////////////////////////////////////////////////////    
    return texName;
}

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

Гончарный Круг

Полученный код я немедленно использовал в своем древнем приложении Гончарный Круг. Почему в нем?
Приложение приносило мне 5 баксов в день в течении 2-ух лет, когда вдруг (примерно месяц назад) поток денег прекратился.
Приложение было примитивное — крутишь гончарный круг. Он крутится, крутится.
А ты пальцем возишь по экрану и деформируешь цилиндр в вазу, стакан или амфору в соответствии со своим художественным талантом.
На вазу можно натянуть картинку и даже раскрасить.

Чтобы понять, что за беда случилась с программой, мне пришлось заглянуть на страницу приложения, и ох! я ужаснулся.
Рейтинг нулевой! И висит единственный отзыв: -НЕ ПОКУПАЙТЕ ЭТО ПРИЛОЖЕНИЕ! Оно не гончарный круг нифига! Зря потратите деньги!

Ну думаю, конкуренты, евреи или мафия. Марио кьюда ля финестра!

И ведь ответить нельзя. То ли дело в Google Play — лайся с пользователями хоть до полуночи.
Вот поэтому я не захожу на страницы своих приложений в appStore и не читаю отзывы — нервы ни к черту, а здоровье дороже.

Единственный способ убрать отрицательный отзыв — выпустить новую версию.
Если это не так — поправьте меня.

Новая версия с видеозахватом

Сделано-сказано, выпустил обновление, прикрутив вышеописанную функцию, то есть стал дергать фото пользователя на лету, лепить на вазу он-лайн и заодно прятать у себя на сервере.
Выложил приложение на проверку. И 20 долгих ночей следил за директорией, где должны были появиться фотографии проверяльщиков. Наглецы! Как чувствовали подвох, три недели ни слуху, ни духу.

И вот вчера, хлопс! Готово, попался мужик, довольно симпатичный, молодой, лет 30, пялится в мое приложение и свой айфон.
А сегодня, хлопс-2, приложение одобрено в аппстор!

По этическим соображениям, фото мужика (и бразильянок из Una Frutta из предыдущей статьи) никому не покажу.
Шутки шутками, а никто на мешает Вам проделать такой же трюк в своих программах.
Полученные фото можно использовать в залах славы, таблицах рейтингов и списках победителяй ежедневных чемпионатов.
Я лично подумываю это сделать в Чапае. Аудитория игры за полгода устаканилась, играют одни и те же 100-200 человек и всем (то есть мне) крайне любопытно, как же выглядят постоянные профи-чемпионы Славян74 или ДимонСергеич или ФабиоХаддад из Бразилии… Возможно, среди них есть читатели.

Конечно, не забудьте предупреждать игроков об этой функции приложения.
И анализируйте картинки. Игроки ведь туда не только лица суют.

Автор: PapaBubaDiop

* - обязательные к заполнению поля