Фильтр манипуляции изображениями, такой как баланс белого, экспозиция, разделенный тон и т. Д. На IOS - PullRequest
6 голосов
/ 27 октября 2011

Я уже неделю пытаюсь создать несколько фильтров для манипулирования изображениями, таких как БАЛАНС БЕЛОГО, ЭКСПОЗИЦИЯ и РАЗДЕЛЕНИЕ ТОНИРОВКИ (как в Photoshop) для моего приложения IOS, но у меня не было стандартной реализации для достижения какого-либо из них.

Я нашел сценарии оболочки для их достижения через ImageMagick

но не знаю, как изменить эти сценарии на их эквивалент в C или цель C. Я просто использую некоторую команду конвертирования, чтобы творить чудеса.

Заранее спасибо. Пожалуйста, помогите.

Баланс белого достигается путем изменения температуры и оттенка изображения. так что если кто-то там знает, как управлять этим оттенком и температурой изображения, пожалуйста, помогите мне из этого. Спасибо.

Ответы [ 2 ]

14 голосов
/ 28 октября 2011

Начиная с iOS 5, Доступны фильтры Core Image .

Очень упрощенный пример, при условии, что вы добавили UIImageView IBOutlet с именем imageView в Interface Builder и настроили его с помощью файла изображения.

  1. Добавьте инфраструктуру CoreImage.
  2. #import <CoreImage/CoreImage.h>
  3. В viewDidLoad добавьте следующее:

    CIImage *inputImage = [[CIImage alloc] initWithImage:self.imageView.image];
    CIFilter *exposureAdjustmentFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
    [exposureAdjustmentFilter setDefaults];
    [exposureAdjustmentFilter setValue:inputImage forKey:@"inputImage"];
    [exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:5.0f] forKey:@"inputEV"];
    CIImage *outputImage = [exposureAdjustmentFilter valueForKey:@"outputImage"];
    CIContext *context = [CIContext contextWithOptions:nil];
    self.imageView.image = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];
    

Другой вариант - использование фильтров из GitHub. ios-image-filters проект.

9 голосов
/ 28 октября 2011

Как автор ios-image-filters , я могу вам сказать, что в нашем проекте есть метод уровней, который вы можете использовать для изменения баланса белого.Он реализован как категория на UIImage и имитирует фильтры Photoshop, поэтому вызывать его так же просто, как:

[self.imageView.image levels:0 mid:128 white:255];

Более того, он совместим с iOS 3 и 4, а не только с iOS 5. Он с открытым исходным кодом и имеетнет зависимостей, поэтому легко изменить, если вы не нашли нужный фильтр.

...