问题标签 [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 投票
1 回答
1848 浏览

objective-c - UIImagePNGRepresentation 内存泄漏

我在我的代码中使用了下面的行

我的应用程序由于内存不足而崩溃。当我使用 VM 跟踪器/分配时,它显示了堆增长。我分析了代码。它显示我在上面的线上泄漏为 100%。方法是否UIImagePNGRepresentation需要更多的内存分配?据我所知,它返回一个自动释放的对象。

如果我做错了什么,请告诉我。

编辑:它没有显示泄漏仪器泄漏。我使用了分配工具,然后对特定功能进行了快照。它向我展示了堆增长。我认为它是在更多使用应用程序后导致应用程序崩溃的原因。在堆中我使用了“扩展详细信息”,它在上面的行上显示了 100%

编辑:希望这会有所帮助

在上面的代码中,fixImageOrientation是为 UIImage 写的一个类。

0 投票
1 回答
3679 浏览

iphone - UIImagePickerControllerOriginalImage 与原始资产数据

在我正在开发的应用程序中,我使用的是用户从他们的相册中选择的图像。我需要将该照片的高分辨率版本上传到我的服务器。

我正在使用 imagePickerController 并且我确定我有 2 个选项

  • 使用 UIImagePickerControllerOriginalImage 中的 UIImage
  • 通过使用 UIImagePickerControllerReferenceURL 和 ALAssetsLibrary assetForURL 获取原始资产(我不喜欢这样,因为它会提示用户使用他们当前的位置,我不需要)

我的问题是......如果我使用第一个选项和第二个选项,图像质量有什么区别吗?

0 投票
5 回答
1446 浏览

ios - UIImagePNGRepresentation 中的 png_error 仅在 iOS 5.1+ 上

我们遇到了一个奇怪的崩溃,其中 UIImagePNGRepresentation() 有时会导致 png_error 调用。我们无法在我们内部的任何设备上重现此错误。

以下是我们的 HockeyApp 崩溃日志之一的堆栈跟踪示例:

我们只在运行 iOS 5.1+ 及更高版本的设备上看到此崩溃日志。我们实际上也遇到了来自 iOS 6 的崩溃,所以这个错误还没有得到修复。

我编写了一个测试应用程序,它下载了我们的应用程序可以显示的超过 16,000 张可能的图像,并且所有这些图像都能够毫无问题地下载并保存到磁盘中。对这个要点的一些回应暗示这个问题可能是由损坏的图像引起的,但看看我如何下载超过 16,000 张图像并且从未遇到过问题,我认为情况并非如此。

我正在研究的最新假设是,正在下载的数据以某种方式损坏,因此正在创建损坏的 UIImage。但是,所有创建损坏的 UIImage 的尝试都失败了。Apple 似乎为 UIImage 创建了一个健壮的构造函数,这样我传入的任何无效的结果都会导致构造函数返回 nil。

有没有其他人从 UIImagePNGRepresentation 经历过这样的事情?

0 投票
1 回答
376 浏览

iphone - ABPersonSetImageData 不为来电设置联系人的全尺寸图像

我可以在 iPhone 通讯录中设置新联系人的缩略图,但是当该联系人呼叫我的手机时,手机不会显示全屏版本。相反,它只在屏幕顶部显示缩略图版本,而我手机的屏幕保护程序在后台。有没有什么特别的事情需要做而我忘记了(见下面的代码片段)?

另外,我确实发现以前的帖子表明无法为联系人保存以前的图像,但这仍然不能解决我的问题......

提前致谢!

0 投票
1 回答
2041 浏览

ios - 有什么方法可以比 UIImagePNGRepresentation 更快地编码 PNG?

我正在为CATiledLayer. 在 iPhone 4S 上生成 120 个 256 x 256 的 4 个细节级别的图块大约需要 11 秒。图像本身适合 2048 x 2048。

我的瓶颈是UIImagePNGRepresentation。生成每张 256 x 256 的图像大约需要 0.10-0.15 秒。

我尝试在不同的背景队列上生成多个图块,但这只会将其缩短到大约 9-10 秒。

我也尝试过使用 ImageIO 框架,代码如下:

虽然这会生成更小的 PNG 文件(赢了!),但它需要大约 13 秒,比以前多 2 秒。

有什么方法可以CGImage更快地对 PNG 图像进行编码吗?也许像libjpeg-turbo这样使用NEONARM 扩展(iPhone 3GS+)的库呢?

是否有比 PNG 更好的格式来保存不占用大量空间的图块?

我能想到的唯一可行的选择是将图块大小增加到 512 x 512。这将编码时间减少了一半。不过,不确定这会对我的滚动视图产生什么影响。该应用适用于 iPad 2+,仅支持 iOS 6(以 iPhone 4S 为基准)。

0 投票
3 回答
22172 浏览

ios - 不使用 UIImagePngrepresentation 或 UIImageJpegRepresentation 将 UIImage 转换为 NSData

我需要转换UIImageNSData但​​不使用UIImagePngRepresentationor UIImageJpegRepresentation,对于来自 photolib 的图像,我可以使用此处提到的 assetslib 方法Using ALAssetsLibrary 和 ALAsset 取出 Image as NSData,但对于捕获的图像,资产 url 不存在因此在这种情况下我需要转换UIImage直接到带有exif数据的字节,我怎么能做到这一点?请帮忙

0 投票
1 回答
3531 浏览

iphone - UIImagePNGRepresentation(UIImage) 抛出 libpng 错误:没有将 IDAT 写入文件

我正在创建一个应用程序,我在其中保存浏览器中的缩略图。一切正常,直到我倾向于将包含此文件的目录移动到另一个目录中。它给出了这个错误:

ImageIO:CGImageRead_mapData“打开”失败“/Users/anuj/Library/Application Support/iPhone Simulator/6.1/Applications/8CD8EB07-6D62-4284-B425-087E821098BC/Library/Caches/PausedVideos/Old School vs. New School/Thumbnail”错误 = 2 (没有这样的文件或目录) ImageIO: CGImageRead_mapData 'open' failed '/Users/anuj/Library/Application Support/iPhone Simulator/6.1/Applications/8CD8EB07-6D62-4284-B425-087E821098BC/Library/Caches/PausedVideos /Old School vs. New School/Thumbnail' 错误 = 2(没有这样的文件或目录)libpng 错误:没有将 IDAT 写入文件

这是我正在使用的代码:

我也提到了这里的链接,但这并没有改变任何东西。

0 投票
1 回答
3555 浏览

ios - UIImageJPEGRepresentation 和 UIImagePNGRepresentation 都很慢

在这里,我在具有静态方法的 UIImage 上按类别将我的图像转换为二进制数据。我的问题是 UIImageJPEGRepresentation 和 UIImagePNGRepresentation 非常慢,最多 6 秒。我需要 1 秒的解决方案。任何人都可以帮助我。在这里,我将图像传递给类别方法,直到其大小减小到小于或等于 10kbs。


NSData *数据; 必须等于某事

0 投票
1 回答
526 浏览

iphone - 启用 Guard Malloc 时 UIImagePNGRepresentation 中的 EXC_BAD_ACCESS 错误

当启用 Guard Malloc 时,我在 UIImagePNGRepresentation() 处收到EXC_BAD_ACCESS 错误,当我禁用时,我在转换图像时没有收到任何错误。我已经通过谷歌寻求解决方案,但我没有找到任何可行的解决方案。下面是代码。

这是 phonegap 插件代码的一部分,任何建议都非常有帮助。谢谢。

0 投票
0 回答
487 浏览

android - 在 iPad 上打开在 Android 中创建的 PNG 图像?

我正在编写一个应用程序,可让您绘制签名,将其转换为 PNG 并以 Base64 格式将其上传到服务器。

此图像应该可以使用 iPad 和 Android 平板电脑下载。

Android 平板电脑可以从其他平板电脑和其他 iPad 下载和显示图像,但由于某种原因,iPad 在尝试将原始图像数据转换为可用的图像格式时会卡住?

在 iPad 上抛出的异常是:

创建PNG图像并将其转换为Base64的Android代码如下:

抛出错误的Objective-C代码是:

其中 signatureImage 是包含 Base64 解码图像数据的 UIImage。

我们已经通过解码并将其保存为图像文件来验证 Base64-ed 图像是正确的(可以正常工作)

这是导致问题的“UIImagePNGRepresentation”调用,但我不知道为什么!

任何想法,所以大师?

编辑 刚刚想到这一点,当我想在 android 上使用签名文件时,我调用以下命令:

会不会是 iPad 在使用之前需要以某种方式解压缩或解码图像?