Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы CoreImage ссылка класса CIKernel

Опции
Развертывание Target:

На этой странице
Язык:

CIKernel

Наследование


Соответствует


Оператор импорта


Swift

import CoreImage

Objective C

@import CoreImage;

Доступность


Доступный в iOS 8.0 и позже.

CIKernel объект управляет, основанная на GPU подпрограмма обработки изображений раньше создавала пользовательские Базовые фильтры Изображения. В OS X используйте CIKernel класс для любого фильтра, включающего пользовательскую основанную на GPU обработку изображений. В iOS, для обеспечения лучшей производительности, используют подклассы CIColorKernel и CIWarpKernel при реализации фильтров, воздействующих только на цвет или информацию о геометрии, и использующих CIKernel класс непосредственно только при реализации фильтров общего назначения, использующих и цвет и информацию о геометрии вместе.

Подпрограмма языка ядра для ядра фильтра общего назначения в iOS (или любого ядра фильтра в OS X) имеет следующие характеристики:

  • Его тип возврата vec4; т.е. это возвращает пиксельный цвет для выходного изображения.

  • Это может использовать нуль или более входные изображения. Каждое входное изображение представлено параметром типа sampler.

Подпрограмма ядра обычно производит свой вывод путем вычисления координат исходного изображения (использующий destCoord и samplerTransform функции или samplerTransform функция), выборки из исходных изображений (использующий sample функция), и вычисляет заключительный пиксельный цвет (вывод с помощью return ключевое слово). Например, Базовый источник Языка Ядра Изображения ниже реализует фильтр, проходящий через его входное неизменное изображение.

  • kernel vec4 do_nothing(sampler image) {
  • vec2 dc = destCoord();
  • return sample(image, samplerTransform(image, dc));
  • }

Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.

  • Создает единственный объект ядра.

    Объявление

    Swift

    convenience init!(string string: String!)

    Objective C

    + (instancetype)kernelWithString:(NSString *)string

    Параметры

    string

    Программа в Базовом Языке Ядра Изображения, содержащем единственную подпрограмму, отметила использование kernel ключевое слово.

    Возвращаемое значение

    Новый объект ядра. В iOS класс возвращенного объекта может быть CIKernel, CIColorKernel, или CIWarpKernel в зависимости от типа подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.

    Обсуждение

    Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.

    Оператор импорта

    Objective C

    @import CoreImage;

    Swift

    import CoreImage

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает и возвращается и массив CIKernel объекты.

    Объявление

    Swift

    class func kernelsWithString(_ s: String!) -> [AnyObject]!

    Objective C

    + (NSArray *)kernelsWithString:(NSString *)s

    Параметры

    s

    Программа в Базовом Языке Ядра Изображения, содержащем одну или более подпрограмм, каждая из которых отмечена с помощью kernel ключевое слово.

    Возвращаемое значение

    Массив CIKernel объекты. Массив содержит тот CIKernel объекты для каждой подпрограммы ядра в предоставленной строке. В iOS каждый объект в массиве может иметь класс CIKernel, CIColorKernel, или CIWarpKernel в зависимости от соответствующей подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.

    Обсуждение

    Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.

    Оператор импорта

    Objective C

    @import CoreImage;

    Swift

    import CoreImage

    Доступность

    Доступный в iOS 8.0 и позже.

  • Возвращает имя подпрограммы ядра.

    Объявление

    Swift

    func name() -> String!

    Objective C

    - (NSString *)name

    Возвращаемое значение

    Имя подпрограммы ядра.

    Обсуждение

    Имя подпрограммы ядра является идентификатором, используемым для объявления его в Базовом исходном коде Языка Ядра Изображения. Например, если Вы используете kernelWithString: метод для создания ядра из исходного кода ниже, имя возвращенного CIKernel объект является «moveUpTwoPixels».

    • kernel vec4 moveUpTwoPixels (sampler image) {
    • vec2 dc = destCoord();
    • vec2 offset = vec2(0.0, 2.0);
    • return sample (image, samplerTransform (image, dc + offset));
    • }

    Оператор импорта

    Objective C

    @import CoreImage;

    Swift

    import CoreImage

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает новое изображение с помощью ядра и указанных параметров.

    Объявление

    Swift

    func applyWithExtent(_ extent: CGRect, roiCallback callback: CIKernelROICallback!, arguments args: [AnyObject]!) -> CIImage!

    Objective C

    - (CIImage *)applyWithExtent:(CGRect)extent roiCallback:(CIKernelROICallback)callback arguments:(NSArray *)args

    Параметры

    extent

    Степень выходного изображения.

    callback

    Блок или закрытие, вычисляющее представляющую интерес область для данного прямоугольника пикселей конечного изображения. Посмотрите CIKernelROICallback.

    args

    Массив параметров для передачи подпрограмме ядра. Тип каждого объекта в массиве должен быть совместим с соответствующим параметром, объявленным в исходном коде подпрограммы ядра. Для получения дополнительной информации посмотрите Базовую Ссылку Языка Ядра Изображения.

    Возвращаемое значение

    Новый объект изображения, описывающий результат применения ядра.

    Обсуждение

    Этот метод походит CIFilter метод apply:arguments:options:, но это не требует конструкции a CIFilter объект, и это позволяет Вам указывать обратный вызов для определения области ядра интереса как блок или закрытие. Как с подобным CIFilter метод, вызывая этот метод не выполняет код ядра — фильтры и их код ядра оценены только при рендеринге изображения окончательного результата.

    При применении ядра фильтра область интереса (ROI) является областью пикселей исходного изображения, которые должны быть обработаны для создания данной области пикселей конечного изображения. Для более подробного определения посмотрите Область Интереса. Базовое Изображение вызывает Ваш callback блок или закрытие для определения ROI при рендеринге вывода фильтра. Базовое Изображение автоматически разделяет большие изображения на меньшие мозаики для рендеринга, таким образом, Ваш обратный вызов можно вызвать многократно.

    Оператор импорта

    Objective C

    @import CoreImage;

    Swift

    import CoreImage

    Доступность

    Доступный в iOS 8.0 и позже.

Типы данных

  • Подпись для блока, вычисляющего область интереса (ROI) для данной области пикселей конечного изображения. Базовое Изображение вызывает этот блок при применении ядра. Вы указываете этот блок при использовании applyWithExtent:roiCallback:arguments: метод.

    Объявление

    Swift

    typealias CIKernelROICallback = (Int32, CGRect) -> CGRect

    Objective C

    typedef CGRect (^CIKernelROICallback)(int index, CGRect rect);

    Обсуждение

    Блок берет следующие параметры:

    index

    Для ядра общего назначения или цветной подпрограммы ядра, поддерживающей многократные входные изображения, индекс исходного изображения, для которого Базовое Изображение запрашивает информацию ROI. Для всех других подпрограмм ядра этот параметр всегда является нулем.

    rect

    Прямоугольник в пикселях конечного изображения, для которых Базовое Изображение запрашивает информацию ROI.

    Блок возвращает a CGRect структура, описывающая представляющую интерес область для указанного прямоугольника.

    При применении ядра фильтра область интереса является областью пикселей исходного изображения, которые должны быть обработаны для создания данной области пикселей конечного изображения. (Для более подробного определения посмотрите Область Интереса.), Например, ядро, применяющее эффект размытия в радиусе на десять пикселей, должно выбрать пиксели исходного изображения на расстоянии в десять пикселей в каждом направлении от каждого выходного пикселя. Таким образом его область интереса является прямоугольником, на десять пикселей больше на каждой стороне, чем целевой прямоугольник:

    • CIKernelROICallback callback = ^(int index, CGRect rect) {
    • return CGRectInset(rect, -10, -10);
    • };

    Если Вашему ядру не нужно изображение в index произвести вывод в прямоугольнике rect, Ваш блок должен возвратиться CGRectNull.

    Оператор импорта

    Objective C

    @import CoreImage;

    Swift

    import CoreImage

    Доступность

    Доступный в iOS 8.0 и позже.