Bir dizi oluşturulmuş görüntüden bir film oluşturmam gerekiyor. (Görüntüleri bir fizik modelleme programının çıktısını temel alarak oluşturuyorum.)Bir dizi oluşturulan görüntüden bir Quicktime filmi nasıl oluşturabilirim?
Apple'ın QtKitCreateMovie örneğini buldum ve bunu bir başlangıç noktası olarak kullandım. Uygulama paketinden jpgs yüklemek yerine, bir NSImage'a çiziyorum ve sonra bu NSImage'ı film nesnesine ekliyorum. İşte test için kullandığım temel kod. mMovie
QTMovie
bir örneğidir:
NSImage *anImage = [[NSImage alloc] initWithSize:NSMakeSize(frameSize, frameSize)];
[anImage lockFocus];
float blendValue;
for (blendValue = 0.0; blendValue <= 1.0; blendValue += 0.05) {
[[[NSColor blueColor] blendedColorWithFraction:blendValue ofColor:[NSColor redColor]] setFill];
[NSBezierPath fillRect:NSMakeRect(0, 0, frameSize, frameSize)];
[mMovie addImage:anImage forDuration:duration withAttributes:myDict];
}
[anImage unlockFocus];
[anImage release];
Bu OS X 10.5 altında çalışır, ancak OS X 10.6 altında ben addImage:forDuration:withAttributes
için sınırlarının ötesinde bir dizi indeksi çağrı istisna olsun: (http://openradar.appspot.com/radar?id=1146401)
neler var 10.6'nın altında bir film oluşturmanın uygun yolu?
Ayrıca, bu, 10.5'in altında çalışmasına rağmen, binlerce kareye sahip bir film oluşturmaya çalışırsam bellek dolduğumda. Bu da bana doğru yaklaşımı kullanmadığımı düşünmemi sağlıyor.
'' [NSBezierPath fillRect:] 'yerine,' NSCompositeSourceOver' için varsayılan değerdir. Sonuç farklı görünmeyecektir (doldurduğunuz tüm renkler 1.0 alfa olduğundan), ancak son kontrol ettiğim Kopya, ölçülebilir şekilde daha hızlıdır. –
Ayrıca, kıvrımlı bir yolu doldurmadığınızda içeriğin kenar yumuşatması gerekip gerekmediğini belirlemenin pek bir nedeni yok. –
Teşekkürler, Peter. Aramalarımı + [NSBezierPath fillRect:] 'den' NSRectFill 'olarak değiştirdim. Gerçek kodumda kavisli yollar çiziyorum. – SSteve