2012-03-31 4 views
2

Я использую AVAssetWriterInputPixelBufferAdaptor для создания видео из массива UIImage, , и я хочу изменить переход от одного изображения к другому в разных формах анимации (как слайд-шоу. .. фактически точно как слайд-шоу).Изменение прозрачности для UIImage (не UIImageView)

Один из этих переходных стилей исчезает. поскольку им письма UIImages как так ..

UIImage *image = imageView.image; 
    UIImage *resizedImage = [ICVideoViewController imageWithImage:image scaledToSize:CGSizeMake(640, 480)]; 
    CGImageRef img = [resizedImage CGImage]; 
    CVPixelBufferRef buffer = [ICVideoViewController pixelBufferFromCGImage:img size:CGSizeMake(640, 480)]; 

    [adaptor appendPixelBuffer:buffer withPresentationTime:CMTimeMake(i, 1)]; 

Я хотел бы знать, если это возможно (без необходимости вручную манипулировать пикселей) для достижения этой цели? ..

ответ

2

Я не знаю, как вы создаете изображение в функции imagawithimage вашего контроллера вида.

Если вы используете CGContext для масштабирования изображения, используйте CGContextSetAlpha() до CGContextDrawImage().

Если вы не можете сделать еще одну вещь, без сомнения, вам необходимо закодировать еще несколько строк для этого, но это может быть одним из способов:

CGSize size = [self size]; 
int width = size.width; 
int height = size.height; 

// the pixels will be painted to this array 
uint32_t *pixels = (uint32_t *) malloc(width * height * sizeof(uint32_t)); 

// clear the pixels so any transparency is preserved 
memset(pixels, 0, width * height * sizeof(uint32_t)); 

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

// create a context with RGBA pixels 
CGContextRef context = CGBitmapContextCreate(pixels, width, height, 8, width * sizeof(uint32_t), colorSpace, 
              kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast); 

// paint the bitmap to our context which will fill in the pixels array 
CGContextSetAlpha(context, 0.5); 
CGContextDrawImage(context, CGRectMake(0, 0, width, height), [self CGImage]); 
CGImageRef image = CGBitmapContextCreateImage(context); 

CGContextRelease(context); 
CGColorSpaceRelease(colorSpace); 
free(pixels);