ios 利用苹果OpenGLES截图,防止无法获取地图的layer层图像,或者黑屏

//直接把代码复制上去,直接应用,self方法调用就可以生成当前屏幕所在的截图!


-(UIImage *)zjcCutScreenImage {

    

    NSInteger myDataLength = self.width * self.height * 4//设置屏幕长度宽度

    

    GLubyte *buffer = (GLubyte *) malloc(myDataLength);

    glReadPixels(0, 0, self.width, self.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

    

    GLubyte *buffer2 = (GLubyte *) malloc(myDataLength);

    for(int y = 0; y <self.height; y++)

    {

        for(int x = 0; x <self.width * 4; x++)

        {

            buffer2[(JSNDHC - y) * self.width * 4 + x] = buffer[y * 4 * 1024 + x];

        }

    }

    

    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL);

    

    int bitsPerComponent = 8;

    

    int bitsPerPixel = 32;

    

    int bytesPerRow = 4 * self.height;

    

    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();

    

    CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;

    

    CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;

    

    CGImageRef imageRef = CGImageCreate(self.width, self.height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);

    

    UIImage *myImage = [UIImage imageWithCGImage:imageRef];


    return myImage;

    

}

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页