gpt4 book ai didi

iOS:renderInContext 和横向方向问题

转载 作者:行者123 更新时间:2023-12-01 16:40:46 28 4
gpt4 key购买 nike

我正在尝试在我的 iOS 设备上为某个应用程序保存当前显示的 View ,并且这工作正常。但是,当我尝试以横向保存 UIImageView 时,我遇到了问题。

请参阅描述我的问题的下图:

enter image description here

我正在为这个应用程序使用自动布局,它可以在 iPhone 和 iPad 上运行。似乎 ImageView 总是以纵向模式保存,我现在有点卡住了。

这是我使用的代码:

CGSize frameSize = self.view.frame.size;

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
frameSize = CGSizeMake(self.view.frame.size.height, self.view.frame.size.width);
}

UIGraphicsBeginImageContextWithOptions(frameSize, NO, 0.0);

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat scale = CGRectGetWidth(self.view.frame) / CGRectGetWidth(self.view.bounds);
CGContextScaleCTM(ctx, scale, scale);

[self.view.layer renderInContext:ctx];

[self.delegate photoSaved:UIGraphicsGetImageFromCurrentImageContext()];

UIGraphicsEndImageContext();

期待您的帮助!

最佳答案

我仍然不知道您的确切问题是什么,但是使用您的屏幕截图代码会产生一个有点奇怪的图像(没有旋转或任何东西,只是太小了)。你可以试试这个代码吗?

+ (UIImage *)imageFromView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, .0f);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}

除此之外,您必须了解 UIImage 之间存在巨大差异。和 CGImage作为 UIImage包括方向,而 CGImage才不是。在处理图像转换时,通常使用 CGImage并获取其宽度或高度将丢弃方向。这意味着 CGImage当其方向未向上时( UIImageOrientationUp )将具有翻转尺寸。但通常在处理此类图像时,您会创建一个 CGImage从上下文中,然后使用 [UIImage imageWithCGImage:ref scale:1.0f orientation:originalOrientation] .仅当您希望显式旋转图像以使其没有方向(即 UIImageOrientationUp )时,您才需要旋转和平移图像并将其绘制到上下文中。

无论如何,这个方向问题现在已经完全解决了, UIImagePNGRepresentation尊重方向,你有一个来自 CGImage 的图像构造函数上面已经写过了,如果我没记错的话,这就是过去所缺少的。

关于iOS:renderInContext 和横向方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694808/

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