精华内容
下载资源
问答
  • 【iOS开发】CMSampleBuffer 和 UIImage 相互转换
    千次阅读
    2022-02-22 17:56:31

    iOS CMSampleBuffer 转换 UIImage

    CMSampleBuffer 转换 UIImage

    第一种方法:

        /// Convert CMSampleBuffer to UIImage
        func WM_FUNC_sampleBufferToImage(_ sampleBuffer:CMSampleBuffer) -> UIImage {
            let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
            let ciimage = CIImage(cvPixelBuffer: imageBuffer)
            let context = CIContext(options: nil)
            let cgImage = context.createCGImage(ciimage, from: ciimage.extent)!
            let image = UIImage(cgImage: cgImage)
            return image;
        }
    

    第二种方法:

    import UIKit
    import AVFoundation
    
    extension CMSampleBuffer {
        func image(orientation: UIImage.Orientation = .up,
                   scale: CGFloat = 1.0) -> UIImage? {
            if let buffer = CMSampleBufferGetImageBuffer(self) {
                let ciImage = CIImage(cvPixelBuffer: buffer)
    
                return UIImage(ciImage: ciImage,
                               scale: scale,
                               orientation: orientation)
            }
    
            return nil
        }
    }
    

    参考文章
    convert-cmsamplebuffer-to-uiimage
    make-an-uiimage-from-a-cmsamplebuffer

    更多相关内容
  • WebP-UIImage 用于在 iOS 中处理WebP图像文件的UIImage类别。 安装 将Classes文件夹和WebP.framework到您的项目中。 用法 开始使用WebP-UIImage很简单。 导入框架#import "UIImage+WebP.h"并调用以下方法: - ( ...
  • UIImage转换样本 保罗·索尔特2010 这是一个示例项目和代码,可在UIImage对象和RGBA8位图之间进行转换。 该示例项目与iPhone 4 / iPad 3.2兼容。 ImageHelper可与iPhone 4和Retina显示器配合使用,并使用正确的...
  • 苹果公司在iOS 11中引入了广泛的HEIC支持,但是它的API有些低级。 这个小项目增加了一个熟悉的接品,用于将UIImage编码为HEIC数据,类似于我们正在使用JPEG或PNG数据。
  • 来源:github/UIImage-HelpersLicence:MIT作者:No Zebra Network  提供三个UIImage的category,能够让UIImage支持截屏、模糊以及根据颜色生成图片的功能。
  • 最近做项目遇到这样一个需求,要求UIImage根据屏幕宽度按照自己本身比例改变高度,下面通过本文给大家分享iOS UIImage根据屏宽调整size的实例代码,需要的朋友参考下吧
  • 使用方便的界面将 UIImageEffects (WWDC 2013) 带入 UIImage 类别。 附加的功能 将模糊应用于具有模糊大小 (CGSize) 的图像 界面 - (UIImage *)lightImage; - (UIImage *)extraLightImage; - (UIImage *)darkImage;...
  • 此类别使您可以按约束大小或按比例调整UIImage的大小,以使其适合给定的CGSize。 此类别定义以下方法: -(UIImage*)resizedImageToSize:( CGSize *)size; -(UIImage*)resizedImageToFitInSize:( CGSize *)size ...
  • 主要介绍了UIImage加载图片Images.xcassets加载方法的影响的相关资料,需要的朋友可以参考下
  • 本文通过两种方法给大家介绍UIImage初始化的区别,在面试过程中经常遇到,对uiimage初始化相关知识感兴趣的朋友一起了解下吧
  • 给 UIView 或 UIImage 高性能添加圆角,生成渐变色图片等
  • UIImage-PDF.zip

    2019-09-17 15:22:06
    UIImage-PDF ,UIImage-PDF 是 UIImage 的分类,实现让 UIImage 支持 PDF 文档的显示...
  • 作者remirobert,代码TextDrawer。 介绍:TextDrawer是一个UIView,允许您在UIView或UIImage上添加带有手势的文本。
  • UIImage - 在 Swift 中调整大小和裁剪 Swift 中的简单类扩展,只需两个函数即可调整大小和裁剪 UIImages。 用法 将文件添加到您的项目中,您就准备好了! 例子 // Resizes an image to 100x100 pixels let ...
  • UIImage+ImageEffects

    2019-04-10 15:03:55
    UIImage+ImageEffects 图片模糊处理功能类
  • 实现UIImage支持截屏功能,源码UIImage-Helpers,该源码功能支持提供三个UIImage的category,而且还可以使UIImage具有支持截屏,另外也可以让图片有模糊的效果,主要是根据颜色生成图片的功能的。 Create a blurred...
  • UIImage-Teny 为 UIImage 提供方法以能够加载带有 -568h 前缀的图像。 安装 pod 'UIImage-Teeny' 用法 你应该准备图像。 我的图片.png [UIImage teenyImagedNamed: @" MyImage.png " ]; // 1. if found MyImage...
  • UIImage分类,包含根据颜色生成图片等功能
  • +(UIImage *)compressImageSize:(UIImage *)image toByte:(NSUInteger)maxLength{ CGFloat compression = 1; NSData *data = UIImageJPEGRepresentation(image, compression); if (data.length < maxLength) ...

    1。图片压缩到指定大小

    +(UIImage *)compressImageSize:(UIImage *)image toByte:(NSUInteger)maxLength{
        CGFloat compression = 1;
        NSData *data = UIImageJPEGRepresentation(image, compression);
        if (data.length < maxLength) return image;
        
        CGFloat max = 1;
        CGFloat min = 0;
        for (int i = 0; i < 6; ++i) {
            compression = (max + min) / 2;
            data = UIImageJPEGRepresentation(image, compression);
            if (data.length < maxLength * 0.9) {
                min = compression;
            } else if (data.length > maxLength) {
                max = compression;
            } else {
                break;
            }
        }
        UIImage *resultImage = [UIImage imageWithData:data];
        if (data.length < maxLength) return resultImage;
        
        // Compress by size
        NSUInteger lastDataLength = 0;
        while (data.length > maxLength && data.length != lastDataLength) {
            lastDataLength = data.length;
            CGFloat ratio = (CGFloat)maxLength / data.length;
            CGSize size = CGSizeMake((NSUInteger)(resultImage.size.width * sqrtf(ratio)),
                                     (NSUInteger)(resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank
            UIGraphicsBeginImageContext(size);
            [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
            resultImage = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
            data = UIImageJPEGRepresentation(resultImage, compression);
        }
        
        return resultImage;
    }

    2.图片压缩到指定宽度

    +(UIImage*)compressImage:(UIImage*)sourceImage toTargetWidth:(CGFloat)targetWidth {
        //获取原图片的大小尺寸
        CGSize imageSize = sourceImage.size;
        CGFloat width = imageSize.width;
        CGFloat height = imageSize.height;
        //根据目标图片的宽度计算目标图片的高度
        CGFloat targetHeight = (targetWidth / width) * height;
        //开启图片上下文
        UIGraphicsBeginImageContext(CGSizeMake(targetWidth, targetHeight));
        //绘制图片
        [sourceImage drawInRect:CGRectMake(0,0, targetWidth, targetHeight)];
        //从上下文中获取绘制好的图片
        UIImage*newImage = UIGraphicsGetImageFromCurrentImageContext();
        //关闭图片上下文
        UIGraphicsEndImageContext();
        
        return newImage;
    }

    3.获取网络图片尺寸

    + (CGSize)getImageSizeWithURL:(id)URL
    {
        NSURL * url = nil;
        if ([URL isKindOfClass:[NSURL class]]) {
            url = URL;
        }
        if ([URL isKindOfClass:[NSString class]]) {
            url = [NSURL URLWithString:URL];
        }
        if (!URL) {
            return CGSizeZero;
        }
        CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
        CGFloat width = 0, height = 0;
        
        if (imageSourceRef) {
            
            // 获取图像属性
            CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);
            
            //以下是对手机32位、64位的处理
            if (imageProperties != NULL) {
                
                CFNumberRef widthNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
                
    #if defined(__LP64__) && __LP64__
                if (widthNumberRef != NULL) {
                    CFNumberGetValue(widthNumberRef, kCFNumberFloat64Type, &width);
                }
                
                CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
                
                if (heightNumberRef != NULL) {
                    CFNumberGetValue(heightNumberRef, kCFNumberFloat64Type, &height);
                }
    #else
                if (widthNumberRef != NULL) {
                    CFNumberGetValue(widthNumberRef, kCFNumberFloat32Type, &width);
                }
                
                CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
                
                if (heightNumberRef != NULL) {
                    CFNumberGetValue(heightNumberRef, kCFNumberFloat32Type, &height);
                }
    #endif
                /***************** 此处解决返回图片宽高相反问题 *****************/
                // 图像旋转的方向属性
                NSInteger orientation = [(__bridge NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyOrientation) integerValue];
                CGFloat temp = 0;
                switch (orientation) {  // 如果图像的方向不是正的,则宽高互换
                    case UIImageOrientationLeft: // 向左逆时针旋转90度
                    case UIImageOrientationRight: // 向右顺时针旋转90度
                    case UIImageOrientationLeftMirrored: // 在水平翻转之后向左逆时针旋转90度
                    case UIImageOrientationRightMirrored: { // 在水平翻转之后向右顺时针旋转90度
                        temp = width;
                        width = height;
                        height = temp;
                    }
                        break;
                    default:
                        break;
                }
                /***************** 此处解决返回图片宽高相反问题 *****************/
                
                CFRelease(imageProperties);
            }
            CFRelease(imageSourceRef);
        }
    
        return CGSizeMake(width, height);
    }

    4.裁剪 指定区域饿的图片

    +(UIImage*)tailoringImage:(UIImage*)img Area:(CGRect)area{
        CGImageRef sourceImageRef = [img CGImage];//将UIImage转换成CGImageRef
        CGRect rect = CGRectMake(area.origin.x, area.origin.y, area.size.width, area.size.height);
        CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);//按照给定的矩形区域进行剪裁
        UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
        return newImage;
    }

    5.裁剪到指定宽高

    - (UIImage *)imageScaleWithImage:(UIImage*) image
                           withWidth:(CGFloat ) width
                          withHeight:(CGFloat) height
    {
        if (!image) {
            return nil;
        }
        EAGLContext *previousContext = [EAGLContext currentContext];
        [EAGLContext setCurrentContext:nil];
        CIImage *ciimage = [CIImage imageWithCGImage:image.CGImage];
        CGFloat imageWidth = ciimage.extent.size.width;//需要取UIimage里面的CIImage 的宽高
        CGFloat imageHeight = ciimage.extent.size.height;
        CGFloat srcRatio = imageWidth/(imageHeight*1.0);
        CGFloat desRatio = width/(height*1.0);
    
        CIContext *context = [CIContext contextWithOptions:nil];
    
        //scale
        CGFloat scale = srcRatio < desRatio ? (width/imageWidth) : (height/imageHeight);
        ciimage = [ciimage imageByApplyingTransform:CGAffineTransformMakeScale(scale, scale)];
    
        CGRect extent = ciimage.extent;
        CGRect resultRect = CGRectMake(extent.origin.x+(extent.size.width - width)/2, extent.origin.y+(extent.size.height - height)/2, width, height);
        CGImageRef ref = [context createCGImage:ciimage fromRect:resultRect];
        UIImage *resultImage = [UIImage imageWithCGImage:ref];
        [EAGLContext setCurrentContext:previousContext];
        return resultImage;
    }

    展开全文
  • OC Extension UIImage+FHXImage(图片扩展) 针对UIImage进行封装的工具类。 /** 输入图片颜色返回一张图片 */ + (UIImage *)createImageWithColor:(UIColor *)color; /** 裁切图片的一个点进行延伸 */ - ...
  • iOS 实时录制视频 流转uiimage 边录制边播放 视频流播放
  • SAImageUtility 提供了几种关于 UIImage 的有用且简单的方法。 特征 椭圆图像,支持添加插图和边框。 + (UIImage*)ellipseImage:(UIImage*)image; + (UIImage*)ellipseImage:(UIImage*)image withInset:(CGFloat)...
  • 这是一个iOS项目,它将有用的UIImage类别的集合重新分组以处理诸如过滤,模糊,增强,蒙版,反射,调整大小,旋转,保存等操作。 UIImageView的子类还可以从URL异步加载图像并在下载时显示它。 它至少需要iOS 5.1 ...
  • 截取UIImage指定大小区域 最近遇到这样的需求:从服务器获取到一张照片,只需要显示他的左半部分,或者中间部分等等。也就是截取UIImage指定大小区域。 UIImage扩展: 我的解决方案是对UIImage进行扩展。通过...
  • iOS 上 UIImage 上的主要颜色查找器 它对图像进行聚类。 它会有所不同,但通常需要 0.05 秒到 0.1 秒之间 (这个 repo 已经是这个类别的一个例子,但是,再次:) 示例用法: #import "UIImage+ColorFinder.h" ... @...
  • 这是UIImage+PDF图像的一个案例,UIImage的一个 category (UIImage+PDF),能够让 UIImage 也能显示pdf格式的文件,这样可以方便利用 UIImageView 的缩放函数来对pdf图像进行缩放。可以用于显示 pdf 格式的图像、...
  • UIImage-BlurredFrame, UIImage类别,模糊了UIImage的指定框架 UIImage+BlurredFrame是一个UIImage类别,模糊了UIImage的指定框架#Install使用 cocoapods 安装pod 'UIImage+BlurredFrame'#Usage

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,688
精华内容 37,875
关键字:

uiimage

友情链接: sunclisd-estimate.rar