CIKernel
Наследование
-
NSObject
-
CIKernel
-
CIColorKernel
-
CIWarpKernel
-
NSObject
-
CIKernel
-
CIColorKernel
-
CIWarpKernel
Оператор импорта
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]!Параметры
s
Программа в Базовом Языке Ядра Изображения, содержащем одну или более подпрограмм, каждая из которых отмечена с помощью
kernel
ключевое слово.Возвращаемое значение
Массив
CIKernel
объекты. Массив содержит тотCIKernel
объекты для каждой подпрограммы ядра в предоставленной строке. В iOS каждый объект в массиве может иметь классCIKernel
,CIColorKernel
, илиCIWarpKernel
в зависимости от соответствующей подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.Обсуждение
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Objective C
@import CoreImage;
Swift
import CoreImage
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает имя подпрограммы ядра.
Возвращаемое значение
Имя подпрограммы ядра.
Обсуждение
Имя подпрограммы ядра является идентификатором, используемым для объявления его в Базовом исходном коде Языка Ядра Изображения. Например, если Вы используете
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, roiCallbackcallback
: CIKernelROICallback!, argumentsargs
: [AnyObject]!) -> CIImage!Objective C
- (CIImage *)applyWithExtent:(CGRect)
extent
roiCallback:(CIKernelROICallback)callback
arguments:(NSArray *)args
Параметры
extent
Степень выходного изображения.
callback
Блок или закрытие, вычисляющее представляющую интерес область для данного прямоугольника пикселей конечного изображения. Посмотрите
CIKernelROICallback
.args
Массив параметров для передачи подпрограмме ядра. Тип каждого объекта в массиве должен быть совместим с соответствующим параметром, объявленным в исходном коде подпрограммы ядра. Для получения дополнительной информации посмотрите Базовую Ссылку Языка Ядра Изображения.
Возвращаемое значение
Новый объект изображения, описывающий результат применения ядра.
Обсуждение
Этот метод походит
CIFilter
методapply:arguments:options:
, но это не требует конструкции aCIFilter
объект, и это позволяет Вам указывать обратный вызов для определения области ядра интереса как блок или закрытие. Как с подобнымCIFilter
метод, вызывая этот метод не выполняет код ядра — фильтры и их код ядра оценены только при рендеринге изображения окончательного результата.При применении ядра фильтра область интереса (ROI) является областью пикселей исходного изображения, которые должны быть обработаны для создания данной области пикселей конечного изображения. Для более подробного определения посмотрите Область Интереса. Базовое Изображение вызывает Ваш
callback
блок или закрытие для определения ROI при рендеринге вывода фильтра. Базовое Изображение автоматически разделяет большие изображения на меньшие мозаики для рендеринга, таким образом, Ваш обратный вызов можно вызвать многократно.Оператор импорта
Objective C
@import CoreImage;
Swift
import CoreImage
Доступность
Доступный в iOS 8.0 и позже.
Типы данных
-
Подпись для блока, вычисляющего область интереса (ROI) для данной области пикселей конечного изображения. Базовое Изображение вызывает этот блок при применении ядра. Вы указываете этот блок при использовании
applyWithExtent:roiCallback:arguments:
метод.Объявление
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 и позже.