8-битное изображение в iOS - PullRequest
2 голосов
/ 05 января 2012

В приложении, над которым я работаю в iOS, мне нужно получить изображение от пользователя, а затем преобразовать его в блочный пиксельный 8-битный стиль, который мы все любим. Я полагаю, что я использую фильтр Quartz / CoreImage (у меня есть смешанные метинки для разработчиков Mac и iOS), чтобы активировать это? Я никогда не использовал ни одного из них, поэтому любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 05 января 2012

Вы можете использовать Core Image, в частности фильтры CIColorPosterize и CIPixellate.Преимущество Core Image состоит в том, что оно использует преимущества графического процессора и будет намного быстрее, чем ручное управление растровым изображением.

Простой пример будет выглядеть примерно так:

NSURL* imageURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForImageResource:@"yourSourceImage"]];
CIImage* inputImage = [[CIImage alloc] initWithContentsOfURL:imageURL];

CIFilter* posterize = [CIFilter filterWithName:@"CIColorPosterize"];
[posterize setDefaults];
[posterize setValue:[NSNumber numberWithDouble:8.0] forKey:@"inputLevels"];
[posterize setValue:inputImage forKey:@"inputImage"];

CIFilter* pixellate = [CIFilter filterWithName:@"CIPixellate"];
[pixellate setDefaults];
[pixellate setValue:[NSNumber numberWithDouble:4.0] forKey:@"inputScale"];
[pixellate setValue:[posterize valueForKey:@"outputImage"] forKey:@"inputImage"];

CIImage* outputImage = [pixellate valueForKey:@"outputImage"];
[inputImage release];

//do something with outputImage

Вы должны игратьс приложением «Core Image Fun House», которое вы можете найти в /Developer/Applications/Graphics Tools для получения значений для фильтров, которые дают желаемый результат.

Вы должны иметь в виду, что Core Image доступен только какiOS 5.

1 голос
/ 05 января 2012

Этот процесс очень просто написать самому.Вы можете использовать CoreGraphics для рендеринга в растровое изображение с использованием CGImage и CGBitmapContext.Затем манипулируйте значениями пикселей напрямую.

8-битные представления будут либо:

  • использовать CLUTs / карты цветов
  • или формат RRRGGGBB

Первый сложнее.Если это для вас ново, начните с преобразования значений пикселей в приблизительное значение RRRGGGBB.Предполагая, что вы знаете, как сдвигать биты и создавать растровое изображение с помощью CoreGraphics (существует множество примеров), все готово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...