gpt4 book ai didi

ios - 将转换后的图像层应用于 renderInContext :

转载 作者:技术小花猫 更新时间:2023-10-29 11:00:55 27 4
gpt4 key购买 nike

背景

我正在使用来自 Chapter 8, Example 14 — Resize and Rotate 的 Erica Saduns Cookbook 示例显然可以调整和旋转 UIImageView

查看层次结构

1.) striped background view.

2.) the interactive view which can be resize and rotate.

3.) an overlay image with a transparent portion. this view starts its y axis at 128 and is 768x768.

4.) above and below 3, are 2 views 128 in height.

******See Photo example below****

问题

目前,我可以使用 [[[self view] layer] renderInContext: 将整个 View 的图层保存到照片库,并且 #2 的转换是正确的.但是,我需要一种方法来保存仅包含 #2#3 的 768x768 (照片示例中的柠檬绿) ,包括#2的转换。如果我使用 [[#2 layer] renderInContext:,我得到原始图像,没有任何转换。 (请参阅下面的屏幕截图以获取 # 引用。

代码

CGSize deviceSpec;
if ( IDIOM == IPAD ) { deviceSpec =CGSizeMake(768,768); } else { deviceSpec =CGSizeMake(320,480); }
if ( scale > 1.5 ) {
UIGraphicsBeginImageContextWithOptions(deviceSpec, NO, scale);
} else {
UIGraphicsBeginImageContext( deviceSpec );
}

CGContextRef ctx = UIGraphicsGetCurrentContext();

[[stripedBg layer] renderInContext:ctx]; //#1

CGContextSaveGState(ctx);

CGContextConcatCTM(ctx, [[interactiveImage layer] affineTransform]);

//CGContextTranslateCTM(ctx, interactiveImage.frame.origin.x,interactiveImage.frame.origin.y-128);

[[interactiveImage layer] renderInContext:ctx]; // #2

CGContextRestoreGState(ctx);

[[overlayImage layer] renderInContext:ctx]; // #3

UIImage * draft = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

照片示例

我只需要在 LIME GREEN 中勾勒出轮廓的图像部分,同时保留用户的转换。

enter image description here

最佳答案

如果我理解正确,问题是您只想渲染第 2 层,但第 2 层具有在仅渲染该层时未保留的变换?在将层渲染到该上下文之前,您可以将这些转换应用于图形上下文的 CTM(当前转换矩阵)。这样的事情应该有效:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGContextConcatCTM(ctx, [layer2 affineTransform]);
[layer2 renderInContext:ctx];
CGContextRestoreGState(ctx);

请注意,仅当您希望在绘制图层后将更多内容绘制到上下文中时,才需要调用 CGContextSaveGState()CGContextRestoreGState()。如果您只需要图层,则可以省略它们。

关于ios - 将转换后的图像层应用于 renderInContext :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337815/

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