我一直试图以编程方式获取我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];
}
答案 0 :(得分:1)
您是以点数而非像素创建屏幕截图。在Retina设备上,这意味着960x640屏幕截图实际上是480x320。这可以解释为什么你认为截图是“模糊的”,仅仅因为它们已经缩小了。
假设您正在使用cocos2d v2.x,您应该使用屏幕大小(以像素为单位)以完整像素分辨率捕获屏幕截图:
CGSize winSize = [CCDirector sharedDirector].winSizeInPixels;
我没有检查过,但假设v3有类似的方法来获取视图/窗口的大小而不是像素。
PS:Facebook在某些条件下对图像应用自己的缩放(并重新格式化为JPG,我相信)。如果您想知道结果是否良好,请将截图保存在照片库中,或将其显示为精灵或通过电子邮件发送给自己,以确认图像看起来没问题,如果有任何剩余的图像质量下降发布到Facebook后。