IOS 截图(opengl)

iOS录屏、暂停、开始 录屏功能,包括了暂停、开启、界面可以实现自定义,满足绝大多数人的需求 立即下载

最近做视频截图,用普通的截图的方法,无法截取视频的图像,地图也是无法截图的

用opengl的方法来截图,前提是你的视频流必须在这上面渲染了

步骤:

1:你的视图初始化的时候,必须转换一下,而且要声明可以进行绘图

 CAEAGLLayer *eaglLayer = (CAEAGLLayer *) self.layer;

        eaglLayer.drawableProperties = @{ kEAGLDrawablePropertyRetainedBacking: [NSNumber numberWithBool:YES], kEAGLDrawablePropertyColorFormat: kEAGLColorFormatRGBA8

                                          };

而后就设置opengl的一些参数,这里不在叙述

2:截图的代码

-(UIImage *)glToUIImage {

     CGSize viewSize=self.frame.size;

     NSInteger myDataLength = viewSize.width * viewSize.height * 4; // allocate array and read pixels into it.

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

     glReadPixels(0, 0, viewSize.width, viewSize.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); // gl renders "upside down" so swap top to bottom into new array. // there's gotta be a better way, but this works.

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

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

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

             buffer2[(int)((viewSize.height-1 - y) * viewSize.width * 4 + x)] = buffer[(int)(y * 4 * viewSize.width + x)];

         }

     }

     // make data provider with data.

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

     // prep the ingredients

     int bitsPerComponent = 8;

     int bitsPerPixel = 32;

     int bytesPerRow = 4 * viewSize.width;

     CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();

     CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;

     CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;

     // make the cgimage

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

     // then make the uiimage from that

     UIImage *myImage = [UIImage imageWithCGImage:imageRef];

     free(buffer);

     CFRelease(provider);

     CFRelease(colorSpaceRef);

     CGImageRelease(imageRef);

     

     return myImage;

 }




iphone opengl es 纹理 截图 iphone opengl es 纹理 截图,把一张图截成一个三角型 立即下载

相关推荐

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

iOS -OPenGL的屏幕截图

1.初始化。 CAEAGLLayer *eaglLayer = (CAEAGLLayer *) self.layer; eaglLayer.drawableProperties = @{ kEAGLDrawablePropertyRetainedBacking: [NSNumber numberWithBool:YES], kEAGLDrawablePropertyC

qq_33391441的博客 684

CarPlay无线连接开发实战:从蓝牙EIR查询到iAP2认证的完整代码逻辑梳理

本文详细解析了无线CarPlay连接开发的完整流程,从蓝牙EIR查询到iAP2认证的代码实现。重点介绍了蓝牙握手、WiFi Beacon帧配置、热点信息准备等关键环节的实战技巧,帮助开发者快速搭建稳定可靠的无线CarPlay连接系统。

weixin_31534091的博客 321

iOS--OpenGL渲染

OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。 OpenGL可以直接把RGB/RGBA的数据直接写入纹理中,利用纹理在窗口上进行贴图。然而我们知道从解码得到的数据基本上都不是RGB的,而是yuv的像素格式,比较常见的有YV12、NV12等。yuv可以通过软件计算转成RGB格式,然后进行贴图,这是一种很低效率的方式

愿成冬天里一阵温暖的南风~~ 2817

Yolov5s/Yolov8s网络结构图

yolov8、yolov5网络结构图

Goodness2020的博客 9925

Cadence仿真MOS电容C-V曲线:从电路图到参数扫描的完整流程

本文详细介绍了使用Cadence Virtuoso仿真MOS电容C-V曲线的完整流程,从电路图绘制到参数扫描,再到结果分析与问题排查。通过实际案例和实用技巧,帮助工程师快速掌握MOS电容特性分析的关键步骤,提升集成电路设计效率。

weixin_29271263的博客 431

opengl渲染4k数据提高效率

1、使用服务端vbo 顶点缓存对象提供顶点数组与显示列表的优势来提升OpenGL效率 1.1 VBO三个重要函数 创建VBO3个步骤: 1 使用glGenBuffers()生成新缓存对象。 2 使用glBindBuffer()绑定缓存对象。 3 使用glBufferData()将顶点数据拷贝到缓存对象中 glGenBuffers()     glGenBuffers()创建缓存对象并且返回缓存对象的标示符。2个参数:第一个为需要创建的缓存数量,第二个为用于存储ID地址

qianbo042311的博客 1541

给STM32F4装上耳朵:用麦克风模块和Keil MDK实现你的第一个语音指令(附完整代码)

本文详细介绍了如何使用STM32F4开发板和麦克风模块实现简单的语音指令识别系统。通过Keil MDK开发环境配置、ADC音频采样、语音活动检测和模板匹配算法,开发者可以快速构建响应'开灯'、'关灯'等基础指令的语音交互方案。文章包含完整代码实现和调试技巧,特别适合STM32初学者入门语音识别领域。

weixin_29171087的博客 435

IOS opengl离屏渲染并截图

环境:IOS 依赖库:GLKit 目标:借助openGL离屏渲染在不影响前端展示的情况下渲染出所需要的模型并截图保存(因为前端展示的和需要的图片背景、角度等参数不同) //print screen when model rotates to angle void printScreen(GLint* viewPort, const char* fileName) { GLbyte...

x2017x的博客 1615

Pyinstaller打包为可执行文件编码错误的问题

Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller

xuefeng_he的博客 1560

CKA-题库-简洁参考答案-反复练习20遍-必过!!!

新版CKA考试已于2020年9月1日正式上线! 考试模式:线上考试 考试时间:2小时 认证有效期:3年 软件版本:Kubernetes v1.19 重考政策:可接受1次重考 经验水平:中級 题目数量:17题 题库量小:随机的题目重复率极高 考试时可打开两个浏览器Tab,一个是考试窗口,一个用来查阅官方文档](https://kubernetes.io/docs/) 01 Task - 英文 Create a new ClusterRole named deployment-clusterrole tha.

随笔记录-分享&记忆 7318

iOS开发:图像处理-颜色填充模式

渐变填充 渐变有两种:线性渐变以及圆形渐变 线性渐变 - (void)drawRect:(CGRect)rect { //获取图像上下文对象 CGContextRef context = UIGraphicsGetCurrentContext(); //使用RGB模式的颜色空间(在Quartz 2D中凡是使用带有Create或者Copy关键字

jijiji000111的专栏 1500

TOGAF架构内容—TOGAF 内容框架和企业元模型

TOGAF架构内容—TOGAF 内容框架和企业元模型

深圳市多克创新科技有限公司 1664

IOS屏幕截图---Opengl截屏

============================================================博文原创,转载请声明出处电子咖啡(原id蓝岩)============================================================上篇blog介绍了如何进行普通截图:IOS屏幕截图---普通截图前面已经说过,使用普通方式截屏,不能能够截取Ope

Eric's Blog 5782

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ios截图功能 opengl实现

-(UIImage *) glToUIImage { int width = [self.view bounds].size.width; int height = [self.view bounds].size.height; NSInteger myDataLength = width * height * 4; // allocate a

iPolaroid的专栏 3313

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS开发- OpenGL ES屏幕截图

之前写过一个常规的屏幕截图:http://blog.youkuaiyun.com/hitwhylz/article/details/17189351可是发现这个办法对于OpenGL 无用。  获取到的数据为空。所以这里介绍下OpenGL ES屏幕截图。1.初始化。CAEAGLLayer *eaglLayer = (CAEAGLLayer *) self.layer; eaglLayer.drawabl...

weixin_33881050的博客 108

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IOS UIview截图

UIview截图 (UIImage *)captureScreen { UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

xuyushiguang的博客 706

iOS 截屏,openGL ES 截图,以及像素颜色判断

代码整理了2种截图,类似。(没苹果自带那种截图彻底) 方法一: +(UIImage *)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; // UIGraphicsBeginImageContext(screenWi...

Elle0508的博客 313

iOS 中获取某个视图的截图

最近在做SDK的截图,想触发类似系统的截屏功能,找了一圈,总结一下靠谱的几种方式。 我写了个UIView 的category,将这几种方式封装和简化了一下。第一种情形截图这种是最最普通的截图,针对一般的视图上添加视图的情况,基本都可以使用。 源码:/** 普通的截图 该API仅可以在未使用layer和OpenGL渲染的视图上使用 @return 截取的图片 */ - (UIImage *)

哈雷的博客 1万+

iOS 截图

+ (UIImage *)viewToImage:(UIView *)theView { UIGraphicsBeginImageContext(theView.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]

iphone专栏 714

iOS 视频截图

截取图片的一部分 -(UIImage *)getPartOfImage:(UIImage *)img rect:(CGRect)partRect { CGImageRef imageRef = img.CGImage; CGImageRef imagePartRef = CGImageCreateWithImageInRect(imageRef, partRe...

甜吖~的博客 992

(转载)iOS 中获取某个视图的截图

原文地址:https://blog.youkuaiyun.com/u011619283/article/details/78658613 最近在做SDK的截图,想触发类似系统的截屏功能,找了一圈,总结一下靠谱的几种方式。 我写了个UIView 的category,将这几种方式封装和简化了一下。 第一种情形截图 这种是最最...

weixin_33859504的博客 139
上一篇: IOS 用block的形式写倒计时
下一篇: 定制iOS 7中的导航栏和状态栏
一路领擎
博客等级 码龄16年 16粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值