Ускорьте Информацию о версии Платформы для 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_CGImageFormattypedef 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_ARGB16SvImageScale_ARGB16U/vImageScale_ARGB16SvImageAffineWarp_ARGB16U/vImageAffineWarp_ARGB16SvImageHorizontalReflect_ARGB16U/vImageHorizontalReflect_ARGB16SvImageVerticalReflect_ARGB16U/vImageVerticalReflect_ARGB16SvImageHorizontalShear_ARGB16U/vImageHorizontalShear_ARGB16SvImageVerticalShear_ARGB16U/vImageVerticalShear_ARGB16S
Многомерные Таблицы поиска и кусочные гамма кривые
Новые функции
Многомерные таблицы поиска и кусочные гамма кривые (функции питания с линейным сегментом около нуля) обычно используются для преобразования цветов. Мы обеспечиваем высокоэффективные подпрограммы для с плавающей точкой и 16Q12 (16-разрядная фиксированная точка со знаком с 12 дробными битами) форматы изображения для целых 16 цветовых каналов.
vImageMultiDimensionalInterpolatedLookupTable_PlanarFvImageMultiDimensionalInterpolatedLookupTable_Planar16Q12vImagePiecewiseGamma_Planar8/vImagePiecewiseGamma_Planar16Q12/vImagePiecewiseGamma_PlanarFvImagePiecewiseGamma_Planar8toPlanar16Q12/vImagePiecewiseGamma_Planar16Q12toPlanar8vImagePiecewiseGamma_Planar8toPlanarF/vImagePiecewiseGamma_PlanarFtoPlanar8
Мы также добавили несколько 1D таблицы поиска:
vImageLookupTable_Planar8toPlanar16vImageLookupTable_Planar8toPlanarF/vImageLookupTable_PlanarFtoPlanar8vImageLookupTable_8to64U
И 16-разрядная поддержка умножения матриц, преобразования цветов и цвета скручивает операции на 16-разрядных данных со знаком:
vImageMatrixMultiply_Planar16S
Преобразования
Новые функции
Много новых преобразований были добавлены для поддержки vImageConvert_AnyToAny. Они представлены для использования, когда Вы уже знаете, какое преобразование Вы хотите и просто хотите вызвать это.
vImageConvert_ARGB16UToARGB8888/vImageConvert_ARGB8888ToARGB16UvImageConvert_RGB16UToARGB8888/vImageConvert_ARGB8888ToRGB16U(также образуйте канал, переупорядочив и вставка канала),
vImageConvert_16Uto16F/vImageConvert_16Fto16UvImageConvert_Planar8toPlanar16F/vImageConvert_Planar16FtoPlanar8vImageConvert_ARGB8888toPlanarF/vImageConvert_ARGBFFFFtoPlanar8vImageConvert_ARGBFFFFtoRGBFFF/vImageConvert_RGBAFFFFtoRGBFFF/vImageConvert_BGRAFFFFtoRGBFFFvImageConvert_RGBFFFtoARGBFFFF/vImageConvert_RGBFFFtoRGBAFFFF/vImageConvert_RGBFFFtoBGRAFFFFvImageConvert_RGBA8888toRGB888/vImageConvert_BGRA8888toRGB888vImageConvert_RGB565toRGBA8888/vImageConvert_RGB565toBGRA8888vImageConvert_XRGB8888ToPlanar8/vImageConvert_BGRX8888ToPlanar8vImageConvert_XRGBFFFFToPlanarF/vImageConvert_BGRXFFFFToPlanarFvImageConvert_Planar16UtoARGB16U/vImageConvert_ARGB16UtoPlanar16UvImageConvert_Planar16UtoRGB16U/vImageConvert_RGB16UtoPlanar16UvImageConvert_RGB16UtoARGB16U/vImageConvert_RGB16UtoRGBA16U/vImageConvert_RGB16UtoBGRA16UvImageConvert_ARGB16UtoRGB16U/vImageConvert_RGBA16UtoRGB16U/vImageConvert_BGRA16UtoRGB16UvImageFlatten_ARGB8888/vImageFlatten_RGBA8888vImageFlatten_ARGB16U/vImageFlatten_RGBA16UvImageFlatten_ARGB16Q12/vImageFlatten_RGBA16Q12vImageFlatten_ARGBFFFF/vImageFlatten_RGBAFFFFvImageFlatten_ARGB8888ToRGB888/vImageFlatten_RGBA8888ToRGB888/vImageFlatten_BGRA8888ToRGB888vImageFlatten_ARGBFFFFToRGBFFF/vImageFlatten_RGBAFFFFToRGBFFF/vImageFlatten_BGRAFFFFToRGBFFFvImageConvert_Planar1toPlanar8/vImageConvert_Planar2toPlanar8/vImageConvert_Planar4toPlanar8vImageConvert_Indexed1toPlanar8/vImageConvert_Indexed2toPlanar8/vImageConvert_Indexed4toPlanar8vImageConvert_Planar8toPlanar1/vImageConvert_Planar8toPlanar2/vImageConvert_Planar8toPlanar4vImageConvert_Planar8toIndexed1/vImageConvert_Planar8toIndexed2/vImageConvert_Planar8toIndexed4vImageConvert_8to16Q12/vImageConvert_RGB888toPlanar16Q12/vImageConvert_ARGB8888toPlanar16Q12vImageConvert_16Q12to8/vImageConvert_Planar16Q12toRGB888/vImageConvert_Planar16Q12toARGB8888vImageConvert_16Q12toF/vImageConvert_Fto16Q12vImageConvert_16Q12to16U/vImageConvert_16Uto16Q12vImageOverwriteChannelsWithPixel_ARGB8888vImageByteSwap_Planar16U
Другие дополнения
Новые функции
Много новых функций были добавлены для поддержки 16Q12 формат данных. 16Q12 16-разрядный формат фиксированной точки со знаком, способный к представлению диапазона от [–8,8). Это имеет 12 битов дробной точности. Дополнительная точность и диапазон полезны для сохранения сигнальной точности при выполнении нелинейных операций на 8-разрядных данных.
vImagePremultipliedAlphaBlendWithPermute_ARGB8888/vImagePremultipliedAlphaBlendWithPermute_RGBA8888vImagePermuteChannelsWithMaskedInsert_ARGB8888/vImagePermuteChannelsWithMaskedInsert_ARGBFFFFvImagePremultiplyData_ARGB16Q12/vImagePremultiplyData_RGBA16Q12vImageUnpremultiplyData_ARGB16Q12/vImageUnpremultiplyData_RGBA16Q12vImageBufferFill_ARGB16U/vImageBufferFill_ARGB16S
Copyright © 2015 Apple Inc Все права защищены. Условия использования | Политика конфиденциальности | обновленный: 22.10.2013