Cocos2dx-截屏并设置图片尺寸

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=522

前几天添加微信图片分享的时候,发现全屏截图超出了微信的数据包大小,所以截屏的时候可以考虑缩小尺寸到0.5倍。
下面的截屏代码:

    void LHUtil::screenShoot()  
    {  
        Size visibleSize = Director::getInstance()->getVisibleSize();  
          
        //定义一个屏幕大小的渲染纹理  
        RenderTexture* renderTexture = RenderTexture::create(visibleSize.width * .5, visibleSize.height * .5, Texture2D::PixelFormat::RGBA8888);  
      
        Scene* curScene = Director::getInstance()->getRunningScene();  
        Point ancPos = pCurScene->getAnchorPoint();  
      
        //渲染纹理开始捕捉  
        renderTexture->begin();  
      
        // 缩小屏幕截屏区域  
        curScene->setScale(.5);  
        curScene->setAnchorPoint(cocos2d::Point(0, 0));  
      
        //绘制当前场景  
        curScene->visit();  
      
        //结束  
        renderTexture->end();  
      
        //保存png  
        renderTexture->saveToFile("screenshoot.png", Image::Format::PNG);  
      
        // 恢复屏幕尺寸  
        curScene->setScale(1);  
        curScene->setAnchorPoint(ancPos);  
        CC_SAFE_DELETE(curScene);  
    }  

上面是cocos2dx的获取截屏的方法。

我顺便写下如何用OC的UIGraphicsBeginImageContext获取UIView转化成UIImage.
下面是ios方法:


    -(void)screenShot:(CGRect)rect{  
        // 开始设置截屏区域  
        UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0);  
        [[self.view layer] renderInContext:UIGraphicsGetCurrentContext()];  
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();  
        UIGraphicsEndImageContext();  
          
        // 获取image,可以根据需要进行尺寸修改  
        CGImageRef imageRef = viewImage.CGImage;  
        CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);  
        UIImage *image = [[UIImage alloc] initWithCGImage:imageRefRect];  
          
        // 保存图片到相册, 这里会提示用户授权,不需要保存的话,可以取消  
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);  
          
        // 获取Documents目录  
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
        NSString *documentsDirectory = [paths objectAtIndex:0];  
        NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"temScreenShot.png"];  
          
        // 保存image到Documents目录  
        NSData *imageData = UIImagePNGRepresentation(image);  
        [imageData writeToFile:savedImagePath atomically:YES];  
        CGImageRelease(imageRefRect);  
    }  





posted @ 2014-03-25 12:39  无形的风  阅读(337)  评论(0编辑  收藏  举报