gpt4 book ai didi

iphone - CGContextDrawPDFPage占用大量内存

转载 作者:行者123 更新时间:2023-12-03 18:32:23 24 4
gpt4 key购买 nike

我有一个 PDF 文件,我想以轮廓形式绘制。我想在文档中绘制前几页,每个页面都在自己的 UIImage 中,以便在按钮上使用,以便单击时,主显示将导航到单击的页面。

但是,CGContextDrawPDFPage 在尝试绘制页面时似乎使用了大量内存。尽管图像的高度应该只有 100 像素左右,但应用程序在绘制一页时会崩溃,根据 Instruments 的说法,仅为一页分配了大约 13 MB 的内存。

这是绘图代码:

//Note: This is always called in a background thread, but the autorelease pool is setup elsewhere
+ (void) drawPage:(CGPDFPageRef)m_page inRect:(CGRect)rect inContext:(CGContextRef) g {
CGPDFBox box = kCGPDFMediaBox;
CGAffineTransform t = CGPDFPageGetDrawingTransform(m_page, box, rect, 0,YES);
CGRect pageRect = CGPDFPageGetBoxRect(m_page, box);

//Start the drawing
CGContextSaveGState(g);

//Clip to our bounding box
CGContextClipToRect(g, pageRect);

//Now we have to flip the origin to top-left instead of bottom left
//First: flip y-axix
CGContextScaleCTM(g, 1, -1);
//Second: move origin
CGContextTranslateCTM(g, 0, -rect.size.height);

//Now apply the transform to draw the page within the rect
CGContextConcatCTM(g, t);

//Finally, draw the page
//The important bit. Commenting out the following line "fixes" the crashing issue.
CGContextDrawPDFPage(g, m_page);

CGContextRestoreGState(g);
}

有没有更好的方法来绘制这个图像,并且不占用大量内存?

最佳答案

尝试添加:

CGContextSetInterpolationQuality(g, kCGInterpolationHigh);
CGContextSetRenderingIntent(g, kCGRenderingIntentDefault);

之前:

CGContextDrawPDFPage(g, m_page);

我遇到了类似的问题,添加上面的 2 个函数调用导致渲染使用的内存减少了 5 倍。可能是 CGContextXXX 绘图函数中的错误

关于iphone - CGContextDrawPDFPage占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2975240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com