Начиная с iOS 5 и выше, вы можете использовать фильтры Core Image для настройки хорошего диапазона параметров изображения.
Например, чтобы настроить контраст, этот код работает как шарм:
- (void)setImageContrast:(float)contrast forImageView:(UIImageView *)imageView {
if (contrast > MIN_CONTRAST && contrast < MAX_CONTRAST) {
CIImage *inputImage = [[CIImage alloc] initWithImage:imageView.image];
CIFilter *exposureAdjustmentFilter = [CIFilter filterWithName:@"CIColorControls"];
[exposureAdjustmentFilter setDefaults];
[exposureAdjustmentFilter setValue:inputImage forKey:@"inputImage"];
[exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:contrast] forKey:@"inputContrast"]; //default = 1.00
// [exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:1.0f] forKey:@"inputSaturation"]; //default = 1.00
// [exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:0.0f] forKey:@"inputBrightness"];
CIImage *outputImage = [exposureAdjustmentFilter valueForKey:@"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
imageView.image = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];
}
}
NB. Значение по умолчанию для контраста - 1,0 (максимальное рекомендуемое значение - 4,0).
Кроме того, здесь рассчитывается контраст на изображении imageView, поэтому повторный вызов этого метода приведет к накоплению контраста.Это означает, что если вы сначала вызовете этот метод со значением контрастности 2.0, а затем снова со значением контрастности 3.0, вы получите исходное изображение со значением контрастности, увеличенным на 6,0 (2,0 * 3,0), а не на 5,0.
Проверьте документацию Apple для получения дополнительных фильтров и параметров.
Чтобы получить список всех доступных фильтров и параметров в коде, просто запустите этот цикл:
NSArray* filters = [CIFilter filterNamesInCategories:nil];
for (NSString* filterName in filters)
{
NSLog(@"Filter: %@", filterName);
NSLog(@"Parameters: %@", [[CIFilter filterWithName:filterName] attributes]);
}