我正在开发一款iPhone应用程序,我很快就会向现场观众进行演示.
我真的很想通过VGA实时演示应用到投影仪,而不是显示截图.
我为iPhone购买了一个VGA适配器,并根据我的需要调整了Rob Terrell的TVOutManager.不幸的是,在家里的电视上测试之后的帧速率并不是那么好 - 即使在iPhone 4上(也许是每秒4-5帧,它会有所不同).
我认为这种缓慢的原因是我用来捕获设备屏幕的主程序(然后显示在外部显示器上)是UIGetScreenImage().此例程不再允许成为运送应用程序的一部分,实际上非常慢.下面是我使用捕捉屏幕的代码(FYI mirrorView是UIImageView):
CGImageRef cgScreen = UIGetScreenImage();
self.mirrorView.image = [UIImage imageWithCGImage:cgScreen];
CGImageRelease(cgScreen);
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法可以用来捕捉iPhone的屏幕并获得更好的帧速率(拍摄20+ fps)?它不需要通过Apple的应用程序审查 - 此演示代码不会在运送应用程序中.如果有人知道任何更快的私有API,我真的很感激帮助!
此外,使用NSTimer每秒1.0/desiredFrameRate(当前每0.1秒)触发的重复执行上述代码.我想知道是否将这些调用包装在一个块中并使用GCD或者NSOperationQueue比NSTimer调用我updateTVOut当前包含这些调用的obj-c方法更有效.我也会欣赏一些意见 - 一些搜索似乎表明,与其他操作相比,obj-c消息发送有点慢.
最后,正如您在上面看到的CGImageRef那样,UIGetScreenImage()返回的内容将被转换为a UIImage,然后将UIImage其传递给a UIImageView,这可能会动态调整图像大小.我想知道调整大小是否会减慢速度.如何更快地做到这一点的想法?
我的iPhone应用程序具有自定义UITableViewCell功能,每个功能都带有图标 在正常的单元状态下,这些图标是黑色的,具有透明背景.而不是将应用程序的第二组倒置图标与突出显示的状态(透明背景上的白色)捆绑在一起,我想在用户触摸相应的表格单元格时使用Core Graphics即时反转这些图标.
我发现了一些UIImage与用颜色重叠或重新着色相关的其他答案UIImage,但所有这些技巧都会给我带来模糊的结果(见下文).我已经尝试了各种各样的CGBlendModes,以及手动计算更准确的面具(也许我做错了),但似乎我的图标边缘周围的半透明像素变得不透明或者基本上是掉落 - 外观波动/模糊.因为我做错了,我感到很茫然.
它也不是真正改变我所有图标的选项,因此它只是纯黑色/白色而没有透明度 - 我需要将图标放在透明背景上,以便它们也可以叠加在其他UI元素之上.
我用来反转图标的代码(由查德威克伍德提供)(我在每个原始图标上调用此方法并[UIColor whiteColor]作为第二个参数传入)和示例输出(在带有iOS 4.1的iPhone 4上)在下方(忽略突出显示图像上的蓝色背景 - 它是所选表格单元格的突出显示背景).
任何帮助是极大的赞赏.
示例输入和输出:

@implementation UIImage(FFExtensions)
+ (UIImage *)imageNamed:(NSString *)name withColor:(UIColor *)color {
// load the image
UIImage *img = [UIImage imageNamed:name];
// begin a new image context, to draw our colored image onto
UIGraphicsBeginImageContext(img.size);
// get a reference to that context we created
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
// set the fill color
[color setFill]; …Run Code Online (Sandbox Code Playgroud) 我有一个AppEngine cron作业查询数据存储区,然后需要对查询返回的每个实体进行一些工作.预计查询返回的实体数量有时会很大(> 1000).
我的目标是最大化并发性并保持较低的内存使用率 - 因为预期的结果数量很大,它们可能不适合内存.
鉴于结果数量很大,我应该像这样迭代它们:
qry = Model.query()
qit = qry.iter()
while (yield qit.has_next_async()):
entity = qit.next()
# Do something with entity
Run Code Online (Sandbox Code Playgroud)
...或者使用更快的map_async()来操作任意大的结果集是否安全?
@ndb.tasklet
def callback(entity):
# Do something with entity
qry = Model.query()
yield qry.map_async(callback)
Run Code Online (Sandbox Code Playgroud)
我已经阅读了所有文档,甚至查看了实现的内容,并不完全清楚这些操作对大型结果集的限制.