2010-10-25 15 views
9

Sto prendendo un UIImage dal file Png e lo mando al videoWriter.Il colore del video non è corretto quando è creato da UIImmagine dei file PNG

avAdaptor appendPixelBuffer: pixelBuffer

Quando il video risultato finale viene fuori, sembra privo di quella del colore, manca il colore giallo o qualcosa del genere.

prendo alook della funzione che ha fatto la pixelbuffer fuori dalla UIImage

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

Cerco anche il kCVPixelFormatType_32AGRB e altri, non ha aiutato.

qualche pensiero?

+1

Qual è il formato del file PNG? Quali altri formati di pixel hai provato? – appas

risposta

1

Verificare se l'immagine PNG è con o senza elemento di trasparenza. Se la tua immagine PNG non contiene trasparenza, allora è a 24 bit e non a 32 bit per pixel.

Inoltre, hai provato kCVPixelFormatType_32RGBA?

0

Forse le dimensioni dell'immagine non si adattano tra loro.

L'immagine di input deve avere la stessa larghezza e altezza come l'uscita video. Se "myWidth" o "myHeight" è diverso (cioè un rapporto di aspetto diverso) rispetto alla dimensione dell'immagine, un byte può essere perso alla fine della linea, il che potrebbe causare lo spostamento del colore. kCVPixelFormatType_32BGRA sembra il formato di pixel preferito (il più veloce), quindi dovrebbe essere a posto.

Non c'è colore giallo nello spazio di colori RGB. Ciò significa che il giallo è solo il rosso> < e> i componenti verdi <. Sembra che manchi blu <.

Presumo che si stia utilizzando un CFDataRef (forse NSData) per l'immagine. Se si tratta di un oggetto NSData è possibile stampare i byte alla console di debug usando

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

Questo stamperà un dump esadecimale alla console. Qui puoi vedere se hai alpha e che tipo di byte order il tuo png è uguale. Se la tua immagine ha alfa, ogni quarto byte dovrebbe essere lo stesso numero.

Problemi correlati