Управление данными в 2D кварце
Управление данными является задачей, которую должно выполнить каждое графическое приложение. Для Кварца управление данными относится к снабжению данными к или получению данных от Кварца 2D подпрограммы. 2D подпрограммы небольшого количества Кварца перемещают данные в Кварц, такой как те, которые получают изображение или данные PDF от файла или другой части Вашего приложения. Другие подпрограммы принимают Кварцевые данные, такие как те, которые пишут изображение или данные PDF к файлу или предоставляют данные другой части Вашего приложения.
Кварц обеспечивает множество функций для управления данными. Путем чтения этой главы необходимо быть в состоянии определить, какие функции являются лучшими для приложения.
Кварц распознает три широких категории источников данных и мест назначения:
URL. Данные, расположение которых может быть указано как URL, могут действовать как поставщик или получатель данных. Вы передаете URL Кварцевой функции использование Базового типа данных Основы
CFURLRef
.CFData. Базовые типы данных Основы
CFDataRef
иCFMutableDataRef
объекты данных, позволяющие простым выделенным буферам взять поведение Базовых объектов Основы. CFData “бесплатный соединенный мостом” с его дубликатом Основы Какао,NSData
класс; при использовании Кварца, 2D с платформой Какао можно передатьNSData
возразите против любой Кварцевой функции, берущей объект CFData.Необработанные данные. Можно обеспечить указатель на данные любого типа вместе с рядом обратных вызовов, заботящихся об управлении основной памятью для данных.
Сами данные, может ли представленный URL, объект CFData или буфер данных, быть данные PDF или данные изображения. Данные изображения могут использовать любой тип формата файла. Кварц понимает большинство общих форматов файла образа. Некоторые Кварцевые функции управления данными работают в частности с данными изображения, некоторые работают только с данными PDF, в то время как другие более универсальны и могут использоваться или для PDF или для данных изображения.
URL, CFData, и источники необработанных данных и места назначения обращаются к данным вне области Mac OS X или технологий графики iOS, как показано на рисунке 10-1. Другие графические технологии в Mac OS X или iOS часто обеспечивают свои собственные подпрограммы для передачи с Кварцем. Например, приложение Mac OS X может отправить Кварцевые изображения в Базовое Изображение и использовать его для изменения изображения со сложными эффектами.
Перемещение данных в 2D кварц
Функции для получения данных от источника данных перечислены в Таблице 10-1. Все эти функции, за исключением CGPDFDocumentCreateWithURL
, любой возврат источник изображения (CGImageSourceRef
) или провайдер данных (CGDataProviderRef
). Источники изображения и провайдеры данных абстрагируют задачу доступа к данным и избавляют от необходимости приложения управлять данными через необработанный буфер памяти.
Источники изображения являются предпочтительным способом переместить данные изображения в Кварц. Источник изображения представляет большое разнообразие данных изображения. Источник изображения может содержать больше чем одно изображение, изображения миниатюр и свойства для каждого изображения и файла образа. После того, как у Вас есть a CGImageSourceRef
, можно выполнить эти задачи:
Создайте изображения (
CGImageRef
) использование функцийCGImageSourceCreateImageAtIndex
,CGImageSourceCreateThumbnailAtIndex
, илиCGImageSourceCreateIncremental
. ACGImageRef
тип данных представляет единственное Кварцевое изображение.Добавьте содержание к источнику изображения с помощью функций
CGImageSourceUpdateData
илиCGImageSourceUpdateDataProvider
.Получите информацию из источника изображения с помощью функций
CGImageSourceGetCount
,CGImageSourceCopyProperties
, иCGImageSourceCopyTypeIdentifiers
.
Функция CGPDFDocumentCreateWithURL
функция удобства, создающая документ в формате PDF из файла, расположенного в указанном URL.
Провайдеры данных являются более старым механизмом с более ограниченной функциональностью. Они могут использоваться для получения данных PDF или изображения.
Можно предоставить провайдера данных к:
Функция создания изображений, такой как
CGImageCreate
,CGImageCreateWithPNGDataProvider
, илиCGImageCreateWithJPEGDataProvider
.Функция создания документа в формате PDF
CGPDFDocumentCreateWithProvider
.Функция
CGImageSourceUpdateDataProvider
обновить существующий источник изображения с новыми данными.
Для получения дополнительной информации об изображениях посмотрите Маски Изображения и Растровые изображения.
Функция | Используйте эту функцию |
---|---|
Создать источник изображения от провайдера данных. | |
Создать источник изображения из объекта CFData. | |
Создать источник изображения из URL, указывающего расположение данных изображения. | |
Создать документ в формате PDF из данных, находящихся в указанном URL. | |
Считать изображение или данные PDF в потоке. Вы предоставляете обратные вызовы для обработки данных. | |
| Считать изображение или данные PDF в блоке. Вы предоставляете обратные вызовы для обработки данных. |
Считать буфер изображения или данных PDF, снабженных Вашим приложением. Вы обеспечиваете обратный вызов для выпуска памяти, которую Вы выделили для данных. | |
Каждый раз, когда можно предоставить URL, указывающий цель для доступа к данным для обработки изображений или данные PDF. | |
Считать изображение или данные PDF от объекта CFData. |
Перемещение Данных из 2D Кварца
Функции, перечисленные в Таблице 10-2, перемещают данные из 2D Кварца. Все эти функции, за исключением CGPDFContextCreateWithURL
, любой возврат место назначения изображения (CGImageDestinationRef
) или потребитель данных (CGDataConsumerRef
). Отобразите место назначения, и потребители данных абстрагируют задачу записи данных, позволяя Кварцу заботиться о подробных данных для Вас.
Место назначения изображения является предпочтительным способом переместить данные изображения из Кварца. Подобный источникам изображения, место назначения изображения может представлять множество данных изображения от единственного изображения до места назначения, содержащего повторные изображения, изображения миниатюр и свойства для каждого изображения или для файла образа. После того, как у Вас есть a CGImageDestinationRef
, можно выполнить эти задачи:
Добавьте изображения (
CGImageRef
) месту назначения, использующему функцииCGImageDestinationAddImage
илиCGImageDestinationAddImageFromSource
. ACGImageRef
тип данных представляет единственное Кварцевое изображение.Свойства набора с помощью функции
CGImageDestinationSetProperties
.Получите информацию от места назначения изображения использование функций
CGImageDestinationCopyTypeIdentifiers
илиCGImageDestinationGetTypeID
.
Функция CGPDFContextCreateWithURL
функция удобства, пишущая данные PDF в расположение, указанное URL.
Потребители данных являются более старым механизмом с более ограниченной функциональностью. Они используются для записи данных PDF или изображения. Можно предоставить потребителя данных к:
Функция создания контекста PDF
CGPDFContextCreate
. Эта функция возвращает графический контекст, записывающий Ваше получение как последовательность команд рисования PDF, передающихся потребительскому объекту данных.Функция
CGImageDestinationCreateWithDataConsumer
создать место назначения изображения от потребителя данных.
Для получения дополнительной информации об изображениях посмотрите Маски Изображения и Растровые изображения.
Функция | Используйте эту функцию |
---|---|
Записать данные изображения потребителю данных. | |
Записать данные изображения в объект CFData. | |
Каждый раз, когда можно предоставить URL, указывающий, где записать данные изображения. | |
Каждый раз, когда можно предоставить URL, указывающий, где записать данные PDF. | |
Каждый раз, когда можно предоставить URL, указывающий, где записать данные PDF или изображение. | |
Записать изображение или данные PDF к объекту CFData. | |
Для записи изображения или данных PDF с помощью обратных вызовов, Вы предоставляете. |
Перемещение данных между кварцем 2D и базовое изображение в Mac OS X
Базовая платформа Изображения является Objective C API, предоставленный в Mac OS X, поддерживающем обработку изображений. Базовое Изображение позволяет Вам доступ встроенные фильтры изображения и для видеоизображений и для неподвижных изображений и предоставляет поддержку для пользовательских фильтров и псевдореальное время, обрабатывая. Можно применить Базовые фильтры Изображения к Кварцу 2D изображения. Например, можно использовать Базовое Изображение, чтобы исправить цвет, исказить геометрию изображений, размыть или увеличить резкость изображений и создать переход между изображениями. Базовое Изображение также позволяет Вам применять итеративный процесс к изображению — то, возвращающее вывод работы фильтра к вводу. Для понимания возможностей Базового Изображения более полно см. Базовое Руководство по программированию Изображения.
Базовые методы Изображения воздействуют на изображения, упаковывающиеся как Базовые изображения Изображения или объекты CIImage. Базовое Изображение не воздействует непосредственно на Кварцевые изображения (CGImageRef
типы данных). Кварцевые изображения должны быть преобразованы в Базовые изображения Изображения перед применением Базового фильтра Изображения к изображению.
Кварц 2D API не обеспечивает функций, которые Кварц пакета отображает как Базовое Изображение, отображает, но Базовое Изображение делает. Следующие Базовые методы Изображения создают Базовое изображение Изображения или из Кварцевого изображения или из уровня Quartz (CGLayerRef
). Можно использовать их для перемещения Кварца 2D данные в Базовое Изображение.
imageWithCGLayer:
imageWithCGLayer:options:
Следующие Базовые методы Изображения возвращают Кварцевое изображение из Базового изображения Изображения. Можно использовать их для положения обратно обработанного изображения в 2D Кварц:
createCGLayerWithSize:info:
Для полного описания Базовых методов Изображения посмотрите Базовый Ссылочный Набор Изображения.