问题标签 [uiimagepngrepresentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
244 浏览

arrays - 使用 UIImagePNGRepresentation 内存警告快速保存图像数组

我正在捕获 UIView 的随机大小/形状的部分并使用 UIImagePNGRepresentation 保存到磁盘。文件按预期保存,但是当我在设备上运行时,我得到可怕的“收到内存警告”,即使我所做的只是在循环中保存文件而不显示它们:

我看过类似的帖子,但没有解决我问题的答案。 这篇文章建议使用 AVFoundation,但我希望我能坚持使用 UIImagePNGRepresentation。

我还尝试将代码的 NSData 部分包装在 autoreleasepool 闭包中,但无济于事:

有没有办法强制 NSData 在写入磁盘后释放每个 dataPng?

0 投票
2 回答
7107 浏览

ios - 如何使用 UIImagePNGRepresentation 压缩图像大小 - iOS?

UIImagePNGRepresentation用来保存图像。结果图像大小为 30+ KB,在我的情况下这是很大的。

我尝试使用UIImageJPEGRepresentation它,它允许压缩图像,所以图像保存在 < 5KB 大小,这很棒,但是将它保存为 JPEG 会得到白色背景,这是我不想要的(我的图像是圆形的,所以我需要保存它具有透明背景)。

如何压缩图像大小,使用UIImagePNGRepresentation

0 投票
1 回答
695 浏览

swift - 无法从 Core Data 加载/检索图像

我整天在互联网上搜索解决方案,但一无所获。我正在将图像保存到核心数据中,当使用带有 NSFetchRequest 的 print(results) 进行测试时,建议通过在“调试”中显示以下内容来存储在核心数据中区域'...

[<toootesting.Entity: 0x7fb0816a69f0> (entity: Entity; id: 0xd000000000040000 <x-coredata://2D52E511-B03F-4629-ADF1-DEBD80A63EC0/Entity/p1> ; data: { photo = <89504e47 0d0a1a0a 0000000d 49484452 0000021c 000001e4 08020000 00fab561 c2000000 01735247 4200aece 1ce90000 0009>;

使用以下代码保存图像...

但是,当我尝试将保存的 CoreData 图像加载到第二个 imageView 时,获取请求出现错误......“无法将类型 [AnyObject] 的值转换为预期的参数类型 NSData”

代码是...

看来我可以将第一个动作中的 UIImage 转换为 NSData,但在 Fetch 上,无法将 NSData 转换回 UIImage 以便在 viewController 上显示它。

我的问题是,如果我可以轻松地从 UIImage 转换为 NSData,我是否可以以同样的方式反之?是什么阻止代码显示图像?编码解决方案将不胜感激。

非常感谢您提前提供的帮助,因为我是这里的新手。

0 投票
0 回答
302 浏览

ios - 无法将图像转换为 NSData

我从照片库中获取所有图像,我想将其导入核心数据中。我正在尝试将图像转换为 NSData,以便将其保存在核心数据中。某些图像已转换,但其他图像未转换。我收到以下错误:

我使用以下代码:

我该如何解决这个问题?

0 投票
3 回答
462 浏览

ios - Objective-c UIImagePNGRepresentation 导致内存泄漏

我正在尝试将一些图像(从 base64 字符串转换为 UIImage)下载并保存到设备并不断收到内存警告。

NSData *pngData = UIImagePNGRepresentation(image);由于图像非常大,因此会出现内存警告。

不幸的是,我无法控制图像的大小,但需要一种方法将它们保存到设备中,以便稍后在画廊中使用它们。

我试图用它来包装代码,@autoreleasepool但没有任何区别。

0 投票
2 回答
753 浏览

ios - 通过 NSData 将 UIImage 转换为 NSSString 时出错

我正在尝试将我UIImage的从 a转换UIImageView为字符串,因为数据存储为 Base64。我正在使用下面的方法来转换图像,但是在尝试更新 convertStr.

这个函数大约是第 10 版,因为我尝试了不同的方法,但结果总是一样的。返回的错误是

“致命错误:在展开可选值时意外发现 nil”和

'函数签名特化)->()到@callee_owned(@unowned Swift.UnsafeBufferPointer)->(@out()),参数类型:[@callee_owned(@unowned Swift.UnsafeBufferPointer)->()]>泛型特化Swift.StaticString.withUTF8Buffer ((Swift.UnsafeBufferPointer) -> A) -> A'

难道是我使用的方法需要一个 png 文件并且不能使用UIImage

0 投票
2 回答
11623 浏览

ios - 快速将 UIImage 转换为 base64 字符串

我正在尝试将 UIImage 转换为 base64 字符串,目的是将其上传到后端服务器。

但是,我在这篇文章中找到的转换代码(应该是苹果自己的实现)生成了一个无效的字符串:

在 UIImage 和 Base64 字符串之间转换

上传后,我得到这张图片:

[从iOS转换的base64解码的失败图像1

而不是这个:

[从在线base64转换工具2解码的正确图像

我使用 Postman 测试了上传结果,后端正确处理了有效的 base64 图像,因此我将错误范围缩小到 base64 转换本身。这是我的代码:

知道如何在将 iOS 设备上的 base64 输出上传到服务器之前修复它吗?

0 投票
1 回答
255 浏览

ios - 以更少的步骤从原始数据到 UIImagePNGRepresentation

使用此代码,我从共享扩展中提取图像并将其写入我在应用程序组中创建的目录。

一切正常。

我想知道的是是否可以减少一些代码:特别是,之后if error == nil,我:

  • 将数据转换为NSURL
  • 用于NSURL得到一个NSData
  • 用于NSData得到一个UIImage
  • 用于UIImage得到一个UIImagePNGRepresentation

除了避免创建 imageData 变量之外,没有办法(安全地)以更少的步骤实现相同的目标吗?

0 投票
0 回答
501 浏览

ios - 在 Swift 3 的 App Bundle 中将 UIImage 保存为 PNG

在新的 iOS 10.3 测试版中,我听说您可以使用应用程序中包含的 PNG 文件以编程方式更改应用程序的图标,并在Info.plist. 我已经使用构建时已经在我的应用程序中的图像成功地做到了这一点。我的想法是,您可以通过获取 UIImage 的 PNG 表示,然后将其保存到应用程序包中的 PNG 文件来将图像设置为您想要的任何内容,以便在更改图标时将其更改为该 UIImage。

假设ic_custom.png我的应用程序中有一个 PNG 文件 ( ):

https://i.stack.imgur.com/eGsYm.jpg

我如何将 UIImage 保存到这个确切的文件中(以便 Info.plist 仍然可以读取它),我可以使用Swift 3setAlternateIcon中的方法访问它吗?如果您无法写入它,那么如果 Info.plist 在 Documents 目录中,是否有办法仍然可以访问它?

0 投票
1 回答
1090 浏览

ios - 使用操作扩展导入图像 - 本地图像的 URL 有效,但不适用于实际图像数据

我的 iOS 应用程序 (Swift 3) 需要使用操作扩展从其他应用程序获取重要图像。我正在使用标准的操作扩展模板代码,它适用于 iOS 邮件和照片等应用程序,其中共享的图像是本地文件的 URL。但是对于某些共享图像是实际图像数据本身的应用程序,我的操作扩展代码没有获取图像。

作为参考,我联系了开发人员以获取其中一个无法正常工作的应用程序,他分享了这段代码,说明了他如何将图像共享到操作扩展。