Ускорьте Информацию о версии Платформы для OS X v10.9
Содержание:
vImage
vImage является высокоэффективной платформой для низкоуровневых операций обработки изображений. Это - подплатформа Accelerate.framework
. Когда Вы соединяетесь для Ускорения, Вы добираетесь, vImage. vImage обеспечивает возможности, такие как размывание, передискретизация/изменение размеров изображения, граничное обнаружение, гистограммы, альфа-составление композита, цвет и преобразования формата изображения.
OS X.9 и iOS 7
vImage.framework
был расширен с помощью нескольких главных новых функций:
Улучшенная Базовая Графическая Функциональная совместимость — видит vImage/vImage_Utilities.h
Новые функции для 16-разрядной передискретизации
Улучшенная поддержка Преобразований
Базовая графическая функциональная совместимость
Новый заголовок, vImage_Utilities.h
, добавляется для обеспечения серии APIs для оптимизации обмена данными между vImage и остальной частью системы. Это обеспечивает ряд интерфейсов для быстро и легко обменные данные изображения с Базовой Графикой через преобразовывающие функции vImage_Buffer
объекты к CGImageRef
объекты и назад. Так как Базовая Графика предоставляет базовую поддержку для Какао и UIKit рисование примитивов, эти методы могут также привыкнуть к быстро и просто обменные пиксельные данные с ними Objective C APIs, включая многие форматы пикселя, не обычно поддерживаемые этим APIs, с помощью образующего мост APIs такой как imageWithCGImage:
.
Новые типы
Новый тип добавляется для агрегации, несколько Базовых Графических типов обычно раньше описывали форматы изображения:
vImage_CGImageFormat
typedef struct {
uint32_t bitsPerComponent;
uint32_t bitsPerPixel;
CGColorSpaceRef colorSpace;
CGBitmapInfo bitmapInfo;
uint32_t version;
const CGFloat *decode;
CGColorRenderingIntent renderingIntent;
}vImage_CGImageFormat;
Значение этих полей совпадает с в
CGImageCreate
.
Новые функции:
Следующий APIs предоставлен, чтобы оптимизировать функциональную совместимость с Базовой Графикой, предусмотреть поверхностный импорт и экспорт vImage данных в форматы, такие как PNG и JPEG, и нарисовать на экран.
vImageBuffer_init
Метод для оптимизации выделения
vImage_Buffer.data
с оптимально размернымrowBytes
значение для производительности изображения.vImageBuffer_initWithCGImage
Инициализируйте a
vImage_Buffer
структура с данными от aCGImageRef
.vImageCreateCGImageFromBuffer
Создайте a
CGImageRef
от avImage_Buffer
.vImageBuffer_GetSize
Функция удобства для возврата размера
vImage_Buffer
какCGSize
. Не окружит.vImageCGImageFormat_GetComponentCount
Функция удобства для возврата числа цвета + альфа-каналы в формате изображения.
vImageCGImageFormat_IsEqual
Если два формата CG эквивалентны - т.е. когда, возвращает true
vImageConvert_AnyToAny
просто сделал бы копию.vImageConverter_MustOperateOutOfPlace
Возвраты
true
когда исходные и конечные изображения передалиvImageConvert_AnyToAny
не должен накладываться.vImageConvert_AnyToAny
Высокоэффективный метод для преобразования между почти любым Базовым Графическим форматом пикселя. Преобразования векторизованы и многопоточны. Функциональная альфа поддержек, порядок байтов, формат (например, 8-разрядный для полуплавания), декодируют массив, цветовое пространство и рендеринг поглощенных преобразований и любой комбинации этого. Сделайте все свои форматы изображения «быстрым путем»!
Пример:
Вот пример того, как инициализировать vImage_Buffer нужного формата (BGRA, 8-разрядный, sRGB в этом случае), от файла, на который ссылается CFURLRef. (CFURLRefs бесплатные соединенный мостом с NSURLs):
CFURLRef url = ...; |
CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL); |
CGImageRef image = CGImageSourceCreateImageAtIndex( imageSource, 0, NULL ); |
vImage_Buffer result; |
vImage_CGImageFormat format = { |
.bitsPerComponent = 8, |
.bitsPerPixel = 32, |
.bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst, //BGRX8888 |
.colorSpace = NULL, //sRGB |
}; // .version, .renderingIntent and .decode all initialized to 0 per C rules |
vImage_Error err = vImageBuffer_InitWithCGImage( &result, &format, NULL, image, kvImageNoFlags ); |
Можно дополнительно выбрать выделять буфер сами и иметь vImage, просто заполняют его корректными пикселями, kvImageNoAllocate
флаг.
Аналогично, создание a CGImageRef
объект от a vImage_Buffer
объект относительно прост:
vImage_Buffer buf = ...; |
// Declare the pixel format for the vImage_Buffer |
vImage_CGImageFormat format = { |
.bitsPerComponent = 8, |
.bitsPerPixel = 32, |
.bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaLast, //RGBA8888 |
}; // .colorspace, .version, .renderingIntent and .decode all initialized to 0 per C rules |
CGImageRef image = vImageCreateCGImageFromBuffer( &buf, &format, NULL, NULL, kvImageNoFlags, &err); |
Расширенные настройки доступны, чтобы позволить Вашему непосредственно использовать vImage_Buffer
возразите как запоминающее устройство для нового изображения, не вызывая копию. Посмотрите vImage_Utilities.h
заголовок комментирует для больше. Кроме того, vImageConvert_AnyToAny
предоставлен для преобразования почти любого Базового формата Графического изображения в почти любого другого. Все фасеты формата изображения могут быть преобразованы, включая цветовое пространство. Существует также ряд функций удобства для межпреобразования между Базовой Графикой и vImage координатными пространствами и определением, имеют ли два изображения тот же формат.
16-разрядная передискретизация
Новые функции
Высокоэффективные подпрограммы для вращения сдвиньте, деформируйте и измените размеры 16-разрядных изображений точно так же, как 8-разрядные и изображения с плавающей точкой. Поддерживаются оба 16-разрядных формата без знака и со знаком.
vImageRotate_ARGB16U
/vImageRotate_ARGB16S
vImageScale_ARGB16U
/vImageScale_ARGB16S
vImageAffineWarp_ARGB16U
/vImageAffineWarp_ARGB16S
vImageHorizontalReflect_ARGB16U
/vImageHorizontalReflect_ARGB16S
vImageVerticalReflect_ARGB16U
/vImageVerticalReflect_ARGB16S
vImageHorizontalShear_ARGB16U
/vImageHorizontalShear_ARGB16S
vImageVerticalShear_ARGB16U
/vImageVerticalShear_ARGB16S
Многомерные Таблицы поиска и кусочные гамма кривые
Новые функции
Многомерные таблицы поиска и кусочные гамма кривые (функции питания с линейным сегментом около нуля) обычно используются для преобразования цветов. Мы обеспечиваем высокоэффективные подпрограммы для с плавающей точкой и 16Q12 (16-разрядная фиксированная точка со знаком с 12 дробными битами) форматы изображения для целых 16 цветовых каналов.
vImageMultiDimensionalInterpolatedLookupTable_PlanarF
vImageMultiDimensionalInterpolatedLookupTable_Planar16Q12
vImagePiecewiseGamma_Planar8
/vImagePiecewiseGamma_Planar16Q12
/vImagePiecewiseGamma_PlanarF
vImagePiecewiseGamma_Planar8toPlanar16Q12
/vImagePiecewiseGamma_Planar16Q12toPlanar8
vImagePiecewiseGamma_Planar8toPlanarF
/vImagePiecewiseGamma_PlanarFtoPlanar8
Мы также добавили несколько 1D таблицы поиска:
vImageLookupTable_Planar8toPlanar16
vImageLookupTable_Planar8toPlanarF
/vImageLookupTable_PlanarFtoPlanar8
vImageLookupTable_8to64U
И 16-разрядная поддержка умножения матриц, преобразования цветов и цвета скручивает операции на 16-разрядных данных со знаком:
vImageMatrixMultiply_Planar16S
Преобразования
Новые функции
Много новых преобразований были добавлены для поддержки vImageConvert_AnyToAny
. Они представлены для использования, когда Вы уже знаете, какое преобразование Вы хотите и просто хотите вызвать это.
vImageConvert_ARGB16UToARGB8888
/vImageConvert_ARGB8888ToARGB16U
vImageConvert_RGB16UToARGB8888
/vImageConvert_ARGB8888ToRGB16U
(также образуйте канал, переупорядочив и вставка канала),
vImageConvert_16Uto16F
/vImageConvert_16Fto16U
vImageConvert_Planar8toPlanar16F
/vImageConvert_Planar16FtoPlanar8
vImageConvert_ARGB8888toPlanarF
/vImageConvert_ARGBFFFFtoPlanar8
vImageConvert_ARGBFFFFtoRGBFFF
/vImageConvert_RGBAFFFFtoRGBFFF
/vImageConvert_BGRAFFFFtoRGBFFF
vImageConvert_RGBFFFtoARGBFFFF
/vImageConvert_RGBFFFtoRGBAFFFF
/vImageConvert_RGBFFFtoBGRAFFFF
vImageConvert_RGBA8888toRGB888
/vImageConvert_BGRA8888toRGB888
vImageConvert_RGB565toRGBA8888
/vImageConvert_RGB565toBGRA8888
vImageConvert_XRGB8888ToPlanar8
/vImageConvert_BGRX8888ToPlanar8
vImageConvert_XRGBFFFFToPlanarF
/vImageConvert_BGRXFFFFToPlanarF
vImageConvert_Planar16UtoARGB16U
/vImageConvert_ARGB16UtoPlanar16U
vImageConvert_Planar16UtoRGB16U
/vImageConvert_RGB16UtoPlanar16U
vImageConvert_RGB16UtoARGB16U
/vImageConvert_RGB16UtoRGBA16U
/vImageConvert_RGB16UtoBGRA16U
vImageConvert_ARGB16UtoRGB16U
/vImageConvert_RGBA16UtoRGB16U
/vImageConvert_BGRA16UtoRGB16U
vImageFlatten_ARGB8888
/vImageFlatten_RGBA8888
vImageFlatten_ARGB16U
/vImageFlatten_RGBA16U
vImageFlatten_ARGB16Q12
/vImageFlatten_RGBA16Q12
vImageFlatten_ARGBFFFF
/vImageFlatten_RGBAFFFF
vImageFlatten_ARGB8888ToRGB888
/vImageFlatten_RGBA8888ToRGB888
/vImageFlatten_BGRA8888ToRGB888
vImageFlatten_ARGBFFFFToRGBFFF
/vImageFlatten_RGBAFFFFToRGBFFF
/vImageFlatten_BGRAFFFFToRGBFFF
vImageConvert_Planar1toPlanar8
/vImageConvert_Planar2toPlanar8
/vImageConvert_Planar4toPlanar8
vImageConvert_Indexed1toPlanar8
/vImageConvert_Indexed2toPlanar8
/vImageConvert_Indexed4toPlanar8
vImageConvert_Planar8toPlanar1
/vImageConvert_Planar8toPlanar2
/vImageConvert_Planar8toPlanar4
vImageConvert_Planar8toIndexed1
/vImageConvert_Planar8toIndexed2
/vImageConvert_Planar8toIndexed4
vImageConvert_8to16Q12
/vImageConvert_RGB888toPlanar16Q12
/vImageConvert_ARGB8888toPlanar16Q12
vImageConvert_16Q12to8
/vImageConvert_Planar16Q12toRGB888
/vImageConvert_Planar16Q12toARGB8888
vImageConvert_16Q12toF
/vImageConvert_Fto16Q12
vImageConvert_16Q12to16U
/vImageConvert_16Uto16Q12
vImageOverwriteChannelsWithPixel_ARGB8888
vImageByteSwap_Planar16U
Другие дополнения
Новые функции
Много новых функций были добавлены для поддержки 16Q12 формат данных. 16Q12 16-разрядный формат фиксированной точки со знаком, способный к представлению диапазона от [–8,8). Это имеет 12 битов дробной точности. Дополнительная точность и диапазон полезны для сохранения сигнальной точности при выполнении нелинейных операций на 8-разрядных данных.
vImagePremultipliedAlphaBlendWithPermute_ARGB8888
/vImagePremultipliedAlphaBlendWithPermute_RGBA8888
vImagePermuteChannelsWithMaskedInsert_ARGB8888
/vImagePermuteChannelsWithMaskedInsert_ARGBFFFF
vImagePremultiplyData_ARGB16Q12
/vImagePremultiplyData_RGBA16Q12
vImageUnpremultiplyData_ARGB16Q12
/vImageUnpremultiplyData_RGBA16Q12
vImageBufferFill_ARGB16U
/vImageBufferFill_ARGB16S
Copyright © 2015 Apple Inc Все права защищены. Условия использования | Политика конфиденциальности | обновленный: 22.10.2013