2015-02-09 2 views
0

Я получаю эту ошибку BSXPCMessage received error for message: Connection interrupted, показывающ каждый раз, когда я создаю CIContext для изображения. Я позволю пользователю отредактировать. Эта ошибка может быть найдена на других StackOverflow вопрос как этот - BSXPCMessage received error for message: Connection interrupted on CIContext with iOS 8Ошибка BSXPCMessage в CIContext & Performance в iOS8

Однако, в то время как принятый ответ (https://stackoverflow.com/a/26268910/2939977) делает работу в устранении сообщение об ошибке, это Шипы использование процессора до непригодного уровня и делает интерфейс очень сильно изменчивый (Использование ЦП от 50% до 150%, когда флаг kCIContextUseSoftwareRenderer установлен на YES), поскольку мои фильтры прикреплены к ползункам, а производительность имеет первостепенное значение.

Я попытался сделать apple documentation here, чтобы создать EAGL context, чтобы создать мой CIContext, чтобы установить цветовое пространство на null.

EAGLContext *myEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 
NSDictionary *options = @{ kCIContextWorkingColorSpace : [NSNull null] }; 
imageContext = [CIContext contextWithEAGLContext:myEAGLContext options:options]; 

Это создает фильтр без сообщения об ошибке, и производительность намного лучше Ура! Однако, как только пользователь задействует параметры редактирования для настройки изображения, я получаю BSXPCMessage received error for message: Connection interrupted при первой настройке. Я никогда не вижу сообщение об ошибке снова, и он, похоже, вообще не влияет на результат.

[filter setValue:@(contrast) forKey:@"inputContrast"]; 
[filter setValue:@(color) forKey:@"inputSaturation"]; 

CIImage *outputImage = [filter outputImage]; 
CGImageRef cgimg = [imageContext createCGImage:outputImage fromRect:[outputImage extent]]; 
UIImage *newImage = [UIImage imageWithCGImage:cgimg scale:1 orientation:UIImageOrientationRight]; 
transitionImage.image = newImage; 
CGImageRelease(cgimg); 

В случае, если вы задаетесь вопросом, я начать GPUImage из-за более высокой производительности при использовании фильтров на ползунков, но обнаружили, что были некоторые другие проблемы, когда дело дошло до масштабирования изображения, которые заставляют меня, чтобы удалить его и идти вниз CIFilter маршрут.

любой совет или помощь будет принята с благодарностью :)

+0

Попробуйте это, http://stackoverflow.com/a/32578781/3411787 –

ответ

0

Если вы собираетесь создать CIContext с:

[CIContext contextWithEAGLContext:options:] 

, то вы должны сделать прямо в этом контексте с помощью:

[cictx drawImage:inRect:fromRect:] 

Это будет намного быстрее, чем создание CGImageRef и передача его в UIImageView.

+0

Спасибо за подсказку Дэвида ... как лучше всего взять CIContext и отобразить его пользователю (просматривая UIImage в настоящее время), а они используют слайдер? Кажется, что большинство вещей проталкивает его через CGImage, а затем в UIImage. Есть ли более эффективный способ? –

+0

см. Https://developer.apple.com/library/ios/samplecode/CIFunHouse/Introduction/Intro.html –

Смежные вопросы