我需要将PDF文档的每个页面转换为PNG图像。然后,这些图像将显示在scrollView中。我需要在每个页面创建两个图像:一个在屏幕尺寸,一个在2.5倍大(当用户放大scrollView时使用它)。
我的问题是,当我创建大图像时,我有时会出现内存警告和崩溃。 我这样做的方式众所周知:
CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
float pdfScale = 2.5*self.view.frame.size.height/pageRect.size.height;
pageRect.size = CGSizeMake(pageRect.size.width*pdfScale, pageRect.size.height*pdfScale);
UIGraphicsBeginImageContext(pageRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context,pageRect);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0, pageRect.size.height);
CGContextScaleCTM(context, pdfScale,-pdfScale);
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
iPhone 3G / 3GS和iPod Touch出现此问题。 如何在缩放比例为2.5的情况下限制内存消耗?
谢谢!
答案 0 :(得分:0)
您可以考虑使用webview来显示PDF,它负责缩放和内存问题。基本上将矢量格式PDF渲染为大尺寸的位图PNG可能不是最合适的设计决策。虽然不知道你对PNG的要求是什么,但很难发表评论。