【问题标题】:What is the CoreGraphics equivalent of UIKit's contentScaleFactor?UIKit 的 contentScaleFactor 的 CoreGraphics 等价物是什么?
【发布时间】:2013-03-05 16:03:20
【问题描述】:

UIKit 的 contentScaleFactor 的 CoreGraphics 等价物是什么?

我正在使用 UKit PDF 创建功能创建 PDF,该功能允许渲染到 PDF 上下文。但是,我需要降低生成的 PDF 的质量。我们已经使用 UIKit 的 contentScaleFactor 属性实现了这一点(渲染到 UIView),它是图形空间和像素空间之间的转换因子。但是,我需要在没有 UIView 的情况下将这种魔法和巫术应用于 CGContextRef,但我不知道该怎么做。

任何其他关于如何降低 PDF 质量的建议将不胜感激。

谢谢

编辑:我的输入是 PDF 文档。我正在使用 CoreGraphics 从另一个 PDF 重新创建一个 PDF,但是这个过程可能会很慢,具体取决于某些 PDF 页面的图形强度。

【问题讨论】:

    标签: ios xcode core-graphics quartz-graphics quartz-2d


    【解决方案1】:

    创建上下文时,指定原始 PDF 的一小部分的宽度和高度:

        CGContextRef context = CGBitmapContextCreate(NULL, 
                                        pdfSize.width / 4, 
                                        pdfSize.height/4, 
                                        8,                      
                                        0,   
                                        colorSpace, 
                                        kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
    

    然后在此处适当缩小绘图。然后你可以这样做:

    CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
    UIImage *reflectionImage = [UIImage imageWithCGImage:cgImage scale:4.0 orientation:up];
    

    或者您可以在新的放大上下文中绘制 cgImage 图像,这取决于您要做什么。

    【讨论】:

    • 我遇到的问题是我正在将一个 PDF 绘制到另一个 PDF 中(基本上,在 CoreGraphics 中重新创建它)。换句话说,PDF 是我的输入;不是图片。
    • 你提到了CGContext,所以我以为你是在使用CGContextDrawPDFPage从pdf页面创建图像......一旦你有了页面的位图表示,你就可以创建一个新的PDF ...也许您可以澄清一下您正在尝试做什么/如何做
    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 2014-05-08
    • 2018-07-10
    • 2023-04-10
    • 2011-01-19
    • 2010-12-07
    相关资源
    最近更新 更多