【问题标题】:saving image from a page of CGPDfDocument is not perfectly fitted in UIImageview从 CGPDfDocument 页面保存图像并不完全适合 UIImageview
【发布时间】:2012-01-07 07:09:42
【问题描述】:

我在将 PDF 页面保存为 UIImage 时遇到了一些问题...该 pdf 是从互联网加载的,并且只有一页(原始 PDF 已拆分为服务器)...但转换后的图像有时会被裁剪。 ..有时它很小,放在 UIImageview 上时会留下空白...

这里是代码

-(UIImage *)imageFromPdf:(NSString *) pdfUrl{

NSURL *pdfUrlStr=[NSURL URLWithString:pdfUrl];

CFURLRef docURLRef=(CFURLRef)pdfUrlStr;


UIGraphicsBeginImageContext(CGSizeMake(768, 1024)); //840, 960
NSLog(@"save begin");

CGContextRef context = UIGraphicsGetCurrentContext();

//CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("/file.pdf"), NULL, NULL);

CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL(docURLRef);

NSLog(@"save complete");

CGContextTranslateCTM(context, 0.0, 900);//320

CGContextScaleCTM(context, 1.0, -1.0);

CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);

CGContextSaveGState(context);


CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, CGRectMake(0, 0, 768, 1024), 0, true);

CGContextConcatCTM(context, pdfTransform);

CGContextDrawPDFPage(context, page);

CGContextRestoreGState(context);

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext();

return resultingImage;

}

顺便说一句,我已经通过这样的编码准备了我的 UIImageview

self.PDFImageVIew.contentMode  = UIViewContentModeScaleAspectFit;
self.PDFImageVIew.clipsToBounds = YES;

我只是希望这张图片完美地贴合在 UIImageview 上,可能是它降低了图片的质量……你能建议我如何保持质量吗?请帮助并给我一些建议

谢谢

【问题讨论】:

    标签: iphone ios ipad uiimage cgpdfdocument


    【解决方案1】:
    CGContextTranslateCTM(context, 0.0, 900);//320
    
    • 这里通常翻译操作的最后一个参数应该是上下文的高度或创建图像的矩形的高度。所以,我认为它应该是 1024(你已经采取了图像上下文的高度是 1024 所以在这里我假设状态栏不存在)。这可以消除裁剪问题。我在您的代码中注意到的更多内容,您应该在对上下文进行任何操作之前保存图形的状态。您正在保存它,但经过几次操作。
    • 以上代码将尝试使其高度适合,因此如果实际页面的高度大于您的上下文高度,那么它将按比例缩小。这样您就可以清楚地看到页面周围的空白区域。
    • 还有一件事,如果您的原始 pdf 页面中有空格,那么据我所知,没有办法消除它。

    【讨论】:

    • 谢谢...它适用于我使用的高度 CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);而不是任何值......但它仍然有一些左右空格..
    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多