我可以对iOS上生成的pdf文件中的图像使用JPEG压缩吗?

时间:2012-04-17 08:15:23

标签: iphone ios ipad pdf

目前我处理的问题是我有pdf文件,其中包含大量1024x768图像,并且我正在尝试优化pdf的文件大小,但我认为现在唯一的解决方案就是用jpeg压缩图像压缩。问题是我没有找到任何方法来使用iOS API。我错过了什么,有办法吗? 我欢迎提出如何使用其他方法优化pdf的建议(降低图像的分辨率对我来说不是一个好的解决方案)。

编辑:如果有人知道另一个用于在iOS上生成pdf的API - 非常感谢链接。

提前致谢。

3 个答案:

答案 0 :(得分:6)

实际上你可以使用UIImageJPEGRepresentation。但是还有另一个步骤,然后使用JPEG数据提供程序绘制图像:

NSData *jpegData = UIImageJPEGRepresentation(sourceImage, 0.75);
CGDataProviderRef dp = CGDataProviderCreateWithCFData((__bridge CFDataRef)jpegData);
CGImageRef cgImage = CGImageCreateWithJPEGDataProvider(dp, NULL, true, kCGRenderingIntentDefault);
[[UIImage imageWithCGImage:cgImage] drawInRect:drawRect];

在绘制到PDF上下文时,这对我很有用。 0.75压缩质量使我的图像载PDF的大小减少了大约75%,并且看起来仍然很好。

答案 1 :(得分:1)

如果有人有兴趣,我通过使用免费的pdf库 - libHaru找到了我的问题的解决方案。它为我提供了将JPEG压缩图像添加到生成的pdf文件所需的功能。

答案 2 :(得分:-1)

如果您想压缩图片,可以使用UIImageJPEGRepresentation

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);

您可以使用

jpeg转换/压缩PNG图像
NSData *someImageData = UIImageJPEGRepresentation(pngImage, 0.6); // quality 0.6 (60%) (from 0.0-1.0).
UIImage *newCompressedJPG = [UIImage imageWithData:someImageData];

但我不这么认为这会减少你的PDF尺寸。因为当您将UIImage放置到您的PDF格式时,RAW图像就会被放置(据我所知)。

更新1: 它的可压缩性从0.0到1.0不等(感谢Leena