gpt4 book ai didi

ios - UIImageView:获取转换后的 UIImage

转载 作者:可可西里 更新时间:2023-11-01 05:13:00 26 4
gpt4 key购买 nike

我正在使用这个旋转 UIImageView:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
myImgView.transform = CGAffineTransformMakeRotation(angle*M_PI/180);
[UIView commitAnimations];

现在我想要旋转图像。我可以这样做吗?我试图使用 CoreGraphics 使用 CGImageRotatedByAngle 函数从 this question 的接受答案中实现它但它转换坐标轻微不正确(最后我们得到第三个屏幕截图标记为错误)。如您所见,图像失去了原始大小并被裁剪了。我的目标是获得像中央镜头一样的原始尺寸图像并旋转指定角度。我的意思是要求旋转形状的大小保持不变,但新图像当然会比初始图像大。

enter image description here

最佳答案

好的,我又来回答我自己的问题了,希望它对以后的人有用......回到 CGImageRotatedByAngle,正如我之前所说,它提供了几乎所需的效果,但必须稍微改变坐标系平移序列。这是我获得预期结果的方式:

- (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle {

CGFloat angleInRadians = angle * (M_PI / 180);
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);

CGRect imgRect = CGRectMake(0, 0, width, height);
CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGContextRef bmContext = CGBitmapContextCreate(NULL,
rotatedRect.size.width,
rotatedRect.size.height,
8,
0,
colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextSetAllowsAntialiasing(bmContext, YES);
CGContextSetShouldAntialias(bmContext, YES);
CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
CGColorSpaceRelease(colorSpace);
CGContextTranslateCTM( bmContext, 0.5f * rotatedRect.size.width, 0.5f * rotatedRect.size.height ) ;
CGContextRotateCTM(bmContext, angleInRadians);
CGContextDrawImage(bmContext, CGRectMake(-imgRect.size.width* 0.5f, -imgRect.size.height * 0.5f,
imgRect.size.width,
imgRect.size.height),
imgRef);
CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
CFRelease(bmContext);
[(id)rotatedImage autorelease];

return rotatedImage;
}

关于ios - UIImageView:获取转换后的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19219855/

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