【问题标题】:Blurry Images when rendering to PDF using UIKit/Coregraphics使用 UIKit/Coregraphics 渲染为 PDF 时图像模糊
【发布时间】:2013-01-28 10:26:07
【问题描述】:

一切看起来都很标准,我下载了PDF GENERATION SAMPLE,并以正常分辨率使用了我自己的资源,我的图像看起来有点不对劲。

这是资产

这是应用程序中的样子

这就是 PDF 中 100% 缩放时的样子

drawImage 函数中的代码非常简单

UIImage * demoImage = [UIImage imageNamed:@"icon_map_project.png"];
[demoImage drawInRect:CGRectMake( (pageSize.width - demoImage.size.width)/2,
                                 350,
                                 demoImage.size.width,
                                 demoImage.size.height)];

没有什么花哨的。我承认,目前我对 PDF 的工作原理、DPI 等细节的熟悉程度超出了我的能力范围。

我看过 LibHaru 并认为它是一个很棒的系统,但我宁愿将其保留在 UIKit/CoreGraphics 的范围内。

您会注意到右侧出现奇怪的锯齿状,即使将图像缩小 50% 似乎也无济于事。

这是使用数字测色仪放大的图像,PDF 为 100%,然后是应用程序

如您所见,图像根本无法正确呈现到 PDF 中,我正在努力寻找解决方案。

感谢您的建议。

【问题讨论】:

  • 您是否验证过(pageSize.width - demoImage.size.width)/2 是一个整数?如果 pageSize.widthdemoImage.size.width 是奇数而另一个是偶数,那么矩形的原点将不是整数,因此它不会位于像素边界上(在非 Retina 屏幕上)。跨度>
  • 我测试了它将矩形的 X 更改为整数但无济于事。感谢您的帮助。

标签: ios pdf uikit core-graphics pdf-generation


【解决方案1】:

您将 PDF 中的图像绘制在与图像大小匹配的矩形中。这导致图像的 72dpi。因为查看器应用程序使用 96dpi 或更高的值作为 100% 缩放的参考,所以当文件以 100% 显示时,您的图像将呈现 100% * 96/72 比例。如果您使用成像工具以该比例放大位图,您会看到类似的锯齿状。解决方案是使用在 37x36pt 矩形中绘制的较大图像,以便生成的图像 dpi 更高。
如果将 PDF 文件缩放到 75%,则页面上显示的图像大小应与应用程序中的图像大小匹配(此假设基于 96 dpi 屏幕)。

【讨论】:

  • 我也很怀疑。如果我的来源允许,我将开始缩小我的图像,或者放大它们。我还有一个问题,你知道为什么放大和缩小 pdf 会导致这些伪影吗?左边的图像是 100%,另一个是非常向内放大。您会在小图像中注意到球的顶部和右侧有小瑕疵。图片缩小了一半,但是缩小时有一些四舍五入,原始图像是45、44。i.imgur.com/svnRVS8.png
  • 伪影有两种可能的原因: 1. CoreGraphics 可能会在将图像插入 PDF 文件时重新采样(这是一个假设,我不确定); 2. 查看器应用程序用于显示图像的缩放算法。在这里您无能为力。
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 2022-07-20
  • 2018-12-25
相关资源
最近更新 更多