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

UIImageJPEGRepresentation和UIImagePNGRepresentation在iOS 13中返回nil

在iOS 13中,UIImageJPEGRepresentation和UIImagePNGRepresentation在某些情况下可能返回nil。这是因为在iOS 13中,苹果对UIImage的编码方式进行了一些改变。

UIImageJPEGRepresentation是一个用于将UIImage对象转换为JPEG格式的函数,而UIImagePNGRepresentation则是将UIImage对象转换为PNG格式的函数。这两个函数通常用于将图片数据转换为特定格式的二进制数据,以便在网络传输或存储时使用。

在iOS 13中,当UIImage对象的图片数据被压缩或编码时,如果图片的像素格式不符合JPEG或PNG的要求,这两个函数可能会返回nil。这种情况通常发生在图片的像素格式不是RGB格式时,例如CMYK格式的图片。

为了解决这个问题,可以使用新的API来替代UIImageJPEGRepresentation和UIImagePNGRepresentation函数。在iOS 13及更高版本中,可以使用新的UIImage方法imageRendererFormat来获取一个支持指定像素格式的图像渲染器,然后使用该渲染器将UIImage对象转换为特定格式的二进制数据。

以下是一个示例代码,展示了如何在iOS 13中将UIImage对象转换为JPEG格式的二进制数据:

代码语言:txt
复制
if let image = UIImage(named: "exampleImage") {
    let format = UIGraphicsImageRendererFormat()
    format.scale = 1.0 // 设置缩放比例
    let renderer = UIGraphicsImageRenderer(size: image.size, format: format)
    let imageData = renderer.jpegData(withCompressionQuality: 0.8)
    
    // 使用imageData进行后续操作
    // ...
}

在上述示例中,我们首先创建了一个UIGraphicsImageRendererFormat对象,并设置了缩放比例。然后,我们使用该格式创建了一个UIGraphicsImageRenderer对象,并指定了UIImage对象的大小。最后,我们使用该渲染器的jpegData方法将UIImage对象转换为JPEG格式的二进制数据。

需要注意的是,上述示例中的压缩质量参数可以根据实际需求进行调整。较高的压缩质量会导致文件大小较大,而较低的压缩质量可能会导致图像质量下降。

对于PNG格式的转换,可以使用类似的方法,只需将renderer.jpegData方法替换为renderer.pngData即可。

腾讯云相关产品和产品介绍链接地址:

请注意,以上产品仅作为示例,实际选择产品应根据具体需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IOS开发高级系列】异步绘制专题

方法耗时上比较少 而UIImagePNGRepresentation耗时操作时间比较长; UIImageJPEGRepresentation函数需要两个参数:图片的引用压缩系数.而UIImagePNGRepresentation...只需要图片引用作为参数.通过实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage...* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation...UIImagePNGRepresentation http://blog.csdn.net/mideveloper/article/details/11473627 png有透明通道,JPEG无 http...: self.imageData]; //将等比压缩过的image转成data赋给self.imageData NSData *data =UIImageJPEGRepresentation(image

1.4K20
  • IOS开发系列——异步绘制专题

    方法耗时上比较少 而UIImagePNGRepresentation耗时操作时间比较长 UIImageJPEGRepresentation函数需要两个参数:图片的引用压缩系数.而UIImagePNGRepresentation...只需要图片引用作为参数.通过实际使用过程中,比较发现:UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage...*image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation...01/21/2869930.html UIImageJPEGRepresentationUIImagePNGRepresentation http://blog.csdn.net/mideveloper...:self.imageData]; //将等比压缩过的image转成data赋给self.imageData NSData *data =UIImageJPEGRepresentation(image

    1.4K20

    UIImageJPEGRepresentationUIImagePNGRepresentation

    Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentationUIImagePNGRepresentation. ...UIImageJPEGRepresentation函数需要两个参数:图片的引用压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过实际使用过程中,比较发现: UIImagePNGRepresentation...(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片,...UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB...(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)

    83410

    iOS开发——头像设置及本地沙盒保存,圆形头像显示

    今天来讲一讲iOS实际开发中,对于头像的应用。 现在的APP中,对于头像的设置,我们大多采用圆形头像,并且需要支持从照相机获取或者从相册中选择用户需要的头像,并且保存在本地或者服务器中。...暂时我还是把代码保存到了沙盒文件里,代码中大家也可以很方便的把存储服务器里的头像图片集成进来。 HeadsPicture.m 中,代码如下。...(image, 0.5); //以PNG格式提取图片数据 //NSData *data = UIImagePNGRepresentation(image); //将图片数据写入文件..., nil); //压缩图片,如果图片要上传到服务器或者网络,则需要执行该步骤(压缩),第二个参数是压缩比例,转化为NSData类型; NSData *fileData = UIImageJPEGRepresentation...]; } 至此,我们已经完成了头像的设置本地的沙盒保存,以及圆形头像的显示。

    1.7K30

    iOS实现视频图片的上传

    关于iOS如何实现视频图片的上传, 我们先理清下思路 思路: #1. 如何获取图片? #2. 如何获取视频? #3. 如何把图片存到缓存路径中? #4. 如何把视频存到缓存路径中? #5....//[UIImagePNGRepresentation(image) writeToFile:path atomically:YES]; [UIImageJPEGRepresentation...stringFromDate:[NSDate date]] stringByAppendingString:@".MOV"]; } 有时候需要获取视频的第一帧作为显示, 方法如下: //获取视频的第一帧截图, 返回...:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"成功返回...model.isUploaded = NO; }]; } 这里有事先创建两个可变数组uploadArray, uploadedArray, 一个存放准要上传的内容, 一个存放上传完的内容 准备上传后做什么操作

    1.9K71

    探讨iOS 图片解压缩到渲染过程

    iOS设备双缓冲机制:显示系统通常会引入两个帧缓冲区,双缓冲机制 图片显示到屏幕上是CPU与GPU的协作完成 对应应用来说,图片是最占用手机内存的资源,将一张图片从磁盘中加载出来,并最终显示到屏幕上,中间其实经过了一系列复杂的处理过程...我们应用中经常用到的 JPEG PNG 图片就是位图 大家可以尝试 UIImage *image = [UIImage imageNamed:@"text.png"]; CFDataRef rawData...值得一提的是,苹果的 SDK 中专门提供了两个函数用来生成 PNG JPEG 图片: // return image as PNG....May return nil if image has no CGImageRef or invalid bitmap format UIKIT_EXTERN NSData * __nullable UIImagePNGRepresentation...UIKIT_EXTERN NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality

    1.7K40

    iOS分享扩展支持自定义联系人

    iOS分享扩展支持自定义联系人 iOS可以通过添加Share Extension来扩展系统的分享组件,能够支持将网页,图片,音乐或任何接入了系统分享组件功能的应用分享到我们自己的App内。...,系统的分享面板中可以看到推荐的抖音联系人信息,如下图所示: 通过联系人推荐入口,我们可以快速的将内容分享到指定的联系人,非常方便。...之后,宿主App工程的Info.plist文件中添加如下键值: Extension的Info.plist中添加如下键值: 需要注意,宿主App扩展插件中的Info.plist文件都要处理,缺一不可...:@"珲少"]; // 联系人图片 INImage *image = [INImage imageWithImageData:UIImagePNGRepresentation([UIImage imageNamed...content:nil speakableGroupName:groupName conversationIdentifier:@"huishao.id" serviceName:nil sender

    79420

    iOS--React Native 图片插件(打开、保存、剪切、压缩)

    一:介绍 React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 原生移动应用平台的衍生产物,目前支持iOS...安卓两大平台。...React Native移动平台项目开发中,除了React Native 提供的封装好的部分插件原声组建外,实际的项目中还需要使用到很多其他的插件,比如网络请求、数据库、相机、相册、通讯录、视频播放器...另外,这些博文都是来源于我日常开发中的技术总结,时间允许的情况下,我会针对技术点分别分享iOS、Android两个版本,如果有其他技术点需要,可在文章后留言,我会尽全力帮助大家。...iOS9_Later) { UIImageWriteToSavedPhotosAlbum(photo, nil, nil, nil); return

    2.7K10
    领券