- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 xcode 9 和 iPhone SE 开发 iOS 应用程序。
我从 iPhone 相册中获取了一张大照片,该照片是 19MB 的 JPEG
图片,格式为 NSData
。
然后我需要修复这张照片的方向,因此我必须将这张照片从 NSData
转换为 UIImage
。然后我需要将此 UIImage
恢复为 NSData(小于 20MB)
。
当我尝试使用 UIImageJPEGRepresentation()
时,设备内存飙升至 1.2G 并崩溃。
当我尝试使用 UIImagePNGRepresentation()
时,结果 NSData
对象大于 20MB。
我不知道该怎么做。谁能帮忙?谢谢!
最佳答案
我想象未压缩的 19MB jpeg 将占用大量空间。您的设备内存增加这么多我并不感到惊讶。 Jpeg 在其属性数据中存储方向属性。为了避免解压缩 jpeg,您可以只编辑属性数据来修复方向。
如果 imageData 是您的 jpeg 数据,您可以按如下方式编辑属性。这使用了 Swift Data 对象,但您可以相当轻松地在 NSData 和 Data 之间跳转
// create an imagesourceref
if let source = CGImageSourceCreateWithData(imageData as CFData, nil) {
// get image properties
var properties : NSMutableDictionary = [:]
if let sourceProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) {
properties = NSMutableDictionary(sourceProperties)
}
// set image orientation
properties[kCGImagePropertyOrientation] = 4
if let uti = CGImageSourceGetType(source) {
// create a new data object and write the new image into it
let destinationData = NSMutableData()
if let destination = CGImageDestinationCreateWithData(destinationData, uti, 1, nil) {
// add the image contained in the image source to the destination, overidding the old metadata with our modified metadata
CGImageDestinationAddImageFromSource(destination, source, 0, properties)
if CGImageDestinationFinalize(destination) == false {
return nil
}
return destinationData as Data
}
}
}
方向值如下
肖像 = 6
人像颠倒 = 8
landscape_volumebuttons_up = 3
landscape_powerbutton_up = 1
关于ios UIImageJPEGRepresentation() 大图像崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47325187/
在iPhone应用程序上,我需要通过邮件发送最大尺寸为300Ko的jpg(我不知道mail.app可以有的最大尺寸,但这是另一个问题)。为此,我尝试降低质量,直到获得低于 300Ko 的图像。 为了获
我正在使用 xcode 9 和 iPhone SE 开发 iOS 应用程序。 我从 iPhone 相册中获取了一张大照片,该照片是 19MB 的 JPEG 图片,格式为 NSData。 然后我需要修复
我有这行代码 UIImageJPEGRepresentation(profileImage, 0.8) 我想知道它是通过降低质量来调整图像的高度和宽度还是仅调整尺寸? 最佳答案 它只会降低质量。 fu
我正在移植到 Android 的 iOS 应用程序中有一个照片上传图像小部件。数据以 multipart/form-data 格式作为 HTTP POST 发送。我需要在 Android 中复制它,但
我试图找出这个问题,但在做了我在操作系统或谷歌上发现的所有事情后都失败了。问题是,当我使用 UIImageJPEGRepresentation 或 UIImagePNGRepresentation 将
我在使用 UIImageJPEGRepresentation 时收到内存警告,有什么办法可以避免这种情况?它不会使应用程序崩溃,但我想尽可能避免它。它确实间歇性地不运行 [[UIApplication
我正在缩放和裁剪一个 UIImage,我希望能够在一个线程安全的 block 中执行此操作。我在文档中找不到 UIImageJPEGRepresentation 是否线程安全。 在下面的代码中,我裁剪
我的应用程序可以拍照或从相机胶卷中选择它们,然后使用 UIImagePicker 我将图片发送到 ViewController,然后用户可以在其中裁剪图像。 最终结果是带有名称和缩略图的 UITabl
我正在将收到的推送通知中的图像保存到磁盘。起初我尝试使用我通常在整个应用程序中使用的静态函数,但我无法从 NotificationService.swift 这是通知扩展。所以我复制了文件中的函数来使
我正在使用 CIFilters 将图像转换为灰度并应用一些图像处理效果。在 UIImageView 中显示输出是可行的;图像显示并按预期进行了修改。 但是,每次调用 UIImageJPEGRepres
我有一个图像(captureImage),它由相机拍摄并调整大小。我使用UIImageJPEGRepresentation来压缩图像,压缩后,图像的大小增加了。这是正常行为还是我以错误的方式进行压缩/
有人可以为我解释一下比例(0 到 1)吗?哪个质量最好/最差,这对文件大小有何影响? 最佳答案 关于规模 The quality of the resulting JPEG image, expres
我正在尝试保存图像 from here到设备的文档目录,但我的方法不起作用。我不得不提到这种方法适用于图片 like this : 我已经使用 iExplorer 检查了文档的目录,并且图像以正确的名
我有这段代码,它创建一个图像,然后向它添加一些效果并将其缩小以制作 largeThumbnail。 UIImage *originalImage = [UIImage imageWithData:se
在这里,我在具有静态方法的 UIImage 上按类别将我的图像转换为二进制数据。我的问题是 UIImageJPEGRepresentation 和 UIImagePNGRepresentation 非
在我的应用程序中,我使用相机和照片库来获取 UIImage, 然后将此 UIImage 缩小大约其正常大小的 20 倍然后我根据 UIImage 设置一个 NSData 对象。 _regularIma
所以我有这段代码来创建一个 UIImage: UIGraphicsBeginImageContextWithOptions(border.frame.size, YES, 0); [border.la
一直在与这个问题作斗争。基本上,我将图像转换为 NSData,以便将其发送到服务器。我以前使用过的代码,但由于某种原因,我收到了一个 ARC 错误。错误出现在我声明 imageData 变量的行上。
我在模拟器中使用 Safari 的“保留 + 保存图像”选项将一些图片存储到我的照片库中。当我从库中选择图像时,我必须将其转换为 JPEG 或 PNG,以便将其上传到服务器。问题是原始图像的大小约为
如上所述,当我使用 UIImageJPEGRepresentation 来NSData *imageData = UIImageJPEGRepresentation(self.selectedPic,
我是一名优秀的程序员,十分优秀!