gpt4 book ai didi

objective-c - 将 UIView 转换为 PDF 会更改图像颜色

转载 作者:搜寻专家 更新时间:2023-10-30 20:09:21 25 4
gpt4 key购买 nike

我的应用中有一个可重复的模式。

这是在应用程序中显示的图像:

Original Image

这是转换为 PDF 后显示的相同图像:

PDF Image - Pink bars instead of faded blue/grey

正如您所看到的,图像颜色从灰色/绿色变为粉红色。
PDF 直接加载到准备发送的电子邮件中。

我不确定这是否与加载到 PDF 中的图像本身有关,或者与 PDF 处理过程有关。无论哪种方式,我都在下面附上了 PDF 过程的代码。

这是我的 PDF 生成代码:

- (NSData *)createPDFForView:(UIView *)view{        
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0, 0, 792, 600), nil);
UIGraphicsBeginPDFPage();
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
[view setFrame:CGRectMake(0, 0, 792, 600)];
[view.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();
return pdfData;
}

在PDF过程中,我通过调整框架将其转换为原来大小的50%,图像本身没有被修改,只是包含图像的 View ;图像在框架内自动调整大小。

有什么办法可以阻止这种颜色变化的发生吗?

最佳答案

PDF 规范仅支持 JPEG、JPEG2000、TIFF 和 JBIG2(以及其他一些没有人关心的无用的)。长话短说,无论您使用什么程序将文档转换为 PDF,都将强制将图像转换为兼容格式,在这些情况下传统上选择 JPEG。

所以原因是因为图像被修改为 JPEG 没有透明度,并且使用了不尊重保留图像外观的 PNG 到 JPEG 转换器。如果图像有任何颜色配置文件,这些配置文件也可能会被剥离。

如果在将文档转换为 PDF 之前将图像转换为 JPEG,您将获得更好的结果并更好地控制所发生的事情。通过这种方式,程序将保持您的图像原样,因此您确切地知道您将得到什么。这也是您指定图像颜色配置文件的唯一机会。

如果可以的话,JPEG2000 比 JPEG 更可取,尤其是当您正在寻找无损图像时。

可以在 PDF 上实现透明度,但这是通过图像对象上的过滤器实现的,与使用的图像格式无关。但是,这比您正在做的要高级一些,可能不值得花时间。

关于objective-c - 将 UIView 转换为 PDF 会更改图像颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377336/

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