JPEG NSData of phototurn UIImage turn JPEG is完全不同的大小

Posted

技术标签:

【中文标题】JPEG NSData of phototurn UIImage turn JPEG is完全不同的大小【英文标题】:JPEG NSData of photo turned UIImage turned JPEG is completely different size 【发布时间】:2015-03-19 19:46:47 【问题描述】:

为什么第一个 JPEG 图像的字节数是第二个的 1/4?

[_stillOutput captureStillImageAsynchronouslyFromConnection:videoConnection:videoConnection completionHandler:
 ^(CMSampleBufferRef imageSampleBuffer, NSError * error)
 
     NSData* imageBytes = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
     NSLog(@"Size = %ld", imageBytes.length);

     UIImage* image2 = [UIImage imageWithData:imageBytes];
     NSData* imageBytes2 = UIImageJPEGRepresentation(image2, 1.0);
     NSLog(@"Size = %ld", imageBytes2.length);
...

第一个尺寸是 1,528,278,第二个尺寸是 4,289,184。 它们的大小不应该大致相同吗?

有没有办法指定jpegStillImageNSDataRepresentation:imageSampleBuffer的缩放和压缩?

【问题讨论】:

我的猜测是NSData* imageBytes2 = UIImageJPEGRepresentation(image2, 0.25); 你应该得到相同的结果。 不。 0.85 给出相同的大小。 【参考方案1】:

显然 Apple 的 jpegStillImageNSDataRepresentation 默认压缩为 0.85 左右。因此,通过将 UIImageJPEGRepresentation 设置为我得到相同的大小。

【讨论】:

以上是关于JPEG NSData of phototurn UIImage turn JPEG is完全不同的大小的主要内容,如果未能解决你的问题,请参考以下文章

NSData/UIImage 到字符串

从 NSData 获取较低质量的 UIImage?

图片压缩

objective-c如何将文件中内容转化为NSData

[图像]判断图片是PNG还是JPG格式

持久化图像数组