首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mac开发跬步积累(一):Cocoa Drawing 之 NSImage imageNamed: 到底做了什么?

及其子类)是真正用来表示图像数据的.它主要从三个方面来描述一个图像:大小,颜色空间,图片格式 NSImageRep类也负责图片数据的存取和转换工作: 它知道如何从一个文件中获取图像数据,或者将图像数据写入到一个文件中去....它也会将图片数据进行转换后显示到对应的上下文环境中....会自动根据图像文件来创建合适的NSImageRep实例对象,不需要我们手动创建.我们只需关心将图像显示到视图中....: Implied cache settings 图像缓存机制是图像显示过程中非常有效的一个环节.这是因为第一次加载图像数据时,它的格式可能并不适合直接渲染到屏幕上去.比如说...,cocoa都做了什么 为了能够快速的查询到图像缓存,cocoa使用了注册索引的方式,你可以想象图像缓存就是一个仓库,里面保存了很多图像缓存数据, 而注册索引就像是这个仓库的目录,这样便于快速的获取指定的物品

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Metal入门教程(八)Metal与OpenGL ES交互

    CVPixelBufferRef Metal纹理在Metal入门教程(五)视频渲染有详细的介绍; CVPixelBufferRef OpenGL ES纹理在OpenGL ES文集也有相关的介绍...; 本文就是基于CVPixelBufferRef,将Metal的纹理转成CVPixelBufferRef,再用CVPixelBufferRef转成OpenGL ES的纹理,实现Metal到OpenGL...三种渲染效果展示 具体步骤 1、Metal渲染 Metal渲染包括两步,分别是渲染到纹理和渲染到屏幕。...在Metal渲染完毕后,会把CVPixelBufferRef里面的数据转成UIImage,同时也会传给OpenGL ES渲染: // 渲染到纹理 { // 创建计算指令的编码器...2、UIImageView渲染 UIImageView显示的数据对象是UIImage,需要把CVPixelBufferRef转成UIImage,具体的步骤如下: /** * 根据CVPixelBufferRef

    2.6K10

    iOS 图片风格转换(CoreML)

    而这个模型就可以被我们不断用来进行图片到具体某一风格的转换。 CoreML介绍 CoreML 是 Apple 今年 WWDC 新推出面向开发者的机器学习框架。...代码实现 CoreML对图片的处理都需要将图片转换成为CVPixelBufferRef数据,这里提供一段UIImage转CVPixelBufferRef的代码。 ?...CVPixelBufferRef转换代码 将图片转换成为CVPixelBufferRef之后放入模型进行处理生成Output并得到结果,结果也是一个CVPixelBufferRef的数据。 ?...Output 所以这里我们还需要将CVPixelBufferRef转回去UIImage,具体的实现代码如下: ? image.png 更多具体的代码见项目。...因此我们可以移植原图的U以及V到合成图上,就可以得到示例图2中的颜色转换合成图了。

    2K80

    iOS端 TRTC v2 版本自定义采集视频数据实现

    E5.92.8C.E6.B8.B2.E6.9F.93 自定义采集视频接口介绍 TRTC SDK 的 iOS 版本支持 NV12 和 i420 两种 YUV 数据格式,在 iOS 平台上,比较高性能的图像传递方式是 CVPixelBufferRef...pixelBuffer CVPixelBufferRef 如果 TRTCVideoBufferType 是 PixelBuffer 才需填写。...然后将采集到的 yuv 数据通过 sendCustomVideoData 接口不断的回调给SDK,SDK收到数据后会自行编码并进行网络传输。...两种 YUV 数据格式(6.2版本只支持 i420),如果需要转换 yuv 格式可以通过三方库 libyuv 实现 //通过 libyuv 转换 yuv 格式 - (void)nv12ToI420:(CVPixelBufferRef...)src dest:(CVPixelBufferRef)dst { //图像宽度(像素) int pixelWidth = (int)CVPixelBufferGetWidth(src

    2K20

    音视频面试题集锦第 17 期

    下面是第 17 期面试题精选: 1、聊聊 iOS CVPixelBufferRef 相关的细节? 2、聊聊对音视频同步的理解? 1、聊聊 iOS CVPixelBufferRef 相关的细节?...1)CVPixelBufferRef 数据格式类型 常用的 CVPixelBufferRef 数据格式(kCVPixelFormatType)有: kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange...合理使用 CVPixelBufferRef 实现 CPU 与 GPU 共享内存。...开发中,如果要进行视频处理,比如滤镜、美颜等,都会用到设备的 GPU 能力,也就是会用到 OpenGL ES 的 API,而 CPU 和 GPU 之间的数据传递效率十分低下,尤其是从 GPU 回传数据到...满足某种条件的 CVPixelBufferRef 本身就是共享内存,这个条件就 CVPixelBufferRef 具有 kCVPixelBufferIOSurfacePropertiesKey 属性,从

    43210

    Metal入门教程(三)摄像头采集渲染

    前言 Metal入门教程(一)图片绘制 Metal入门教程(二)三维变换 前面的教程介绍了如何绘制一张图片和如何把图片显示到3D物体上并进行三维变换,这次介绍如何用Metal渲染摄像头采集到的图像。...采集摄像头数据得到CMSampleBufferRef,用CoreVideo提供的方法将图像数据转为Metal的纹理,再用MetalPerformanceShaders的高斯模糊滤镜对图像进行处理,结果展示到屏幕上...didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { CVPixelBufferRef...CVMetalTextureGetTexture(tmpTexture); CFRelease(tmpTexture); } } 这是demo的核心内容,摄像头回传CMSampleBufferRef数据,找到CVPixelBufferRef...或者给MTKView增加旋转变换: self.mtkView.transform = CGAffineTransformMakeRotation(M_PI / 2); 总结 本文有两个核心点:从CVPixelBufferRef

    1.5K41
    领券