Неправильный цвет видео при создании из UIImage файлов PNG - PullRequest
9 голосов
/ 25 октября 2010

Я беру UIImage из файла Png и подаю его на videoWriter.

avAdaptor appendPixelBuffer: pixelBuffer

Когда выходит видео с конечным результатом, кажется, что ему не хватает одного цвета,пропуская желтый цвет или что-то в этом роде.

Я смотрю на функцию, которая сделала пиксельный буфер из UIImage

CVPixelBufferCreateWithBytes(NULL,
                             myWidth,
                             myHeight,
                             kCVPixelFormatType_32BGRA, 
                             (void*)CFDataGetBytePtr(image), 
                             CGImageGetBytesPerRow(cgImage), 
                             NULL, 
                             0,
                             NULL, 
                             &pixelBuffer);

Я также пробую kCVPixelFormatType_32AGRB и другие, это не помогло.

есть мысли?

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Убедитесь, что ваше изображение PNG с прозрачным элементом или без него.Если ваше PNG-изображение не содержит прозрачности, тогда оно 24-битное, а не 32-битное на пиксель.

Кроме того, вы пробовали kCVPixelFormatType_32RGBA?

0 голосов
/ 12 октября 2011

Возможно, размеры изображения не совпадают.

Ваше входное изображение должно иметь ту же ширину и высоту, что и видеовыход. Если «myWidth» или «myHeight» отличается (т.е. отличается соотношением сторон) от размера изображения, один байт может быть потерян в конце строки, что может привести к смещению цвета. kCVPixelFormatType_32BGRA кажется предпочтительным (самым быстрым) форматом пикселей, так что все должно быть в порядке.

Нет желтого цвета в цветовом пространстве RGB. Это означает, что желтый - это только> красный <и> зеленый <компоненты. Кажется, что> синий <отсутствует. </p>

Я предполагаю, что вы используете CFDataRef (возможно NSData) для изображения. Если это объект NSData, вы можете распечатать байты на консоли отладки, используя

NSLog(@"data: %@", image); 

Это выведет шестнадцатеричный дамп на консоль. Здесь вы можете увидеть, есть ли у вас альфа и какой порядок байтов ваш png похож. Если у вашего изображения есть альфа, каждый четвертый байт должен быть одинаковым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...