将PDF页面转换为PNG图像时崩溃

时间:2011-04-12 13:28:30

标签: iphone image ios pdf uiscrollview

我需要将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的情况下限制内存消耗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以考虑使用webview来显示PDF,它负责缩放和内存问题。基本上将矢量格式PDF渲染为大尺寸的位图PNG可能不是最合适的设计决策。虽然不知道你对PNG的要求是什么,但很难发表评论。