objective-c – 如何从一系列生成的图像创建Quicktime影片?

objective-c – 如何从一系列生成的图像创建Quicktime影片?,第1张

概述我需要从一系列生成图像创建一部电影. (我正在根据物理建模程序的输出创建图像.) 我在QtKitCreateMovie中找到了Apple的样本并将其作为起点.我没有从应用程序包中加载jpgs,而是绘制到NSImage,然后将NSImage添加到电影对象中.这是我用于测试的基本代码. mMovie是QTMovie的一个实例: NSImage *anImage = [[NSImage alloc] 我需要从一系列生成的图像中创建一部电影. (我正在根据物理建模程序的输出创建图像.)

我在QtKitCreateMovIE中找到了Apple的样本并将其作为起点.我没有从应用程序包中加载jpgs,而是绘制到NSImage,然后将NSImage添加到电影对象中.这是我用于测试的基本代码. mMovIE是QTMovIE的一个实例:

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,frameSize,frameSize)];    [mMovIE addImage:anImage forDuration:duration withAttributes:myDict];}[anImage unlockFocus];[anImage release];

此作品在OS X 10.5,但在OS X 10.6我上调用addImage数组索引超出界限异常:forDuration:withAttributes:(http://openradar.appspot.com/radar?id=1146401)

在10.6下制作电影的正确方法是什么?

此外,虽然这可以在10.5下工作,但如果我尝试创建一个包含数千帧的电影,我的内存就会耗尽.这也让我觉得我没有使用正确的方法.

解决方法 你做对了,但你做错了.

QTKit中没有改变正确的方法.您的错误在于您在完成图像之前尝试添加图像,这在您解锁焦点时会发生.由于在尝试添加图像(20次)之前没有解锁焦点,因此您尝试添加未完成的图像(20次),这不起作用.

“越界”异常是因为图像没有表示.看来,QTMovIE试图循环遍历图像返回的数组以响应表示消息,但该数组为空,因为图像未完成.

不知何故,你在Leopard中侥幸逃脱了这一点(可能是由于SNow Leopard中的实现细节发生了变化),但我会说这不过是你的错误.

解决方案只是在每次循环时锁定焦点并解除对图像的关注:

float blendValue;for (blendValue = 0.0; blendValue <= 1.0; blendValue += 0.05) {    [anImage lockFocus];    [[NSGraphicsContext currentContext] setShouldAntialias:NO];    [[[NScolor bluecolor] blendedcolorWithFraction:blendValue ofcolor:[NScolor redcolor]] setFill];    [NSBezIErPath fillRect:NSMakeRect(0,frameSize)];    [anImage unlockFocus];    [mMovIE addImage:anImage forDuration:duration withAttributes:myDict];}
总结

以上是内存溢出为你收集整理的objective-c – 如何从一系列生成的图像创建Quicktime影片?全部内容,希望文章能够帮你解决objective-c – 如何从一系列生成的图像创建Quicktime影片?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1011629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存