如何获得高质量的iOS截图?

时间:2014-09-20 15:07:12

标签: ios objective-c cocos2d-iphone screenshot

我一直试图以编程方式获取我Cocos2d游戏的高质量屏幕截图,以便在社交网络上发布。质量一直很差,最常见的是模糊不清。我决定采用手动截图并将其发布到Facebook,质量也很模糊。屏幕上呈现的大多数图像都是.png格式和spritesheets(使用RGBA444图像格式,.pvr.ccz纹理格式,FloydSteinbergAlpha抖动),也是大多数精灵的分辨率是ppi。这些设置中的任何一个都会导致模糊吗?另外,无论如何我可以分享屏幕上呈现的图像而不是截取屏幕截图吗?请参阅以下代码:

-(UIImage*) screenshotWithStartNode:(CCNode*)startNode
{
    [CCDirector sharedDirector].nextDeltaTimeZero = YES;

    CGSize winSize = [CCDirector sharedDirector].winSize;
    CCRenderTexture* rtx = 
    [CCRenderTexture renderTextureWithWidth:winSize.width 
                             height:winSize.height];
    [rtx begin];
    [startNode visit];
    [rtx end];

    return [rtx getUIImage];
}

1 个答案:

答案 0 :(得分:1)

您是以点数而非像素创建屏幕截图。在Retina设备上,这意味着960x640屏幕截图实际上是480x320。这可以解释为什么你认为截图是“模糊的”,仅仅因为它们已经缩小了。

假设您正在使用cocos2d v2.x,您应该使用屏幕大小(以像素为单位)以完整像素分辨率捕获屏幕截图:

CGSize winSize = [CCDirector sharedDirector].winSizeInPixels;

我没有检查过,但假设v3有类似的方法来获取视图/窗口的大小而不是像素。

PS:Facebook在某些条件下对图像应用自己的缩放(并重新格式化为JPG,我相信)。如果您想知道结果是否良好,请将截图保存在照片库中,或将其显示为精灵或通过电子邮件发送给自己,以确认图像看起来没问题,如果有任何剩余的图像质量下降发布到Facebook后。