我正在尝试使用CATransform3DRotate方法围绕其X轴旋转UIImage,并获得旋转的UIImage,但旋转后,某些部分将被裁剪,而某些部分将被留下黑色(透明)。
我正在使用Brad Larson的GPUImage框架来执行此操作。
我的代码是
filter = [[GPUImageTransformFilter alloc] init];
CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = 0.4;
perspectiveTransform.m33 = 0.4;
perspectiveTransform = CATransform3DRotate(perspectiveTransform, 0.75, 1.0, 0.0, 0.0);
[(GPUImageTransformFilter *)filter setTransform3D:perspectiveTransform];
GPUImagePicture *sourcePicture = [[GPUImagePicture alloc] initWithImage:_myImage smoothlyScaleOutput:YES];
[sourcePicture addTarget:filter];
[filter useNextFrameForImageCapture];
[sourcePicture processImage];
_myImage = [filter imageFromCurrentFramebuffer];
有没有办法可以让新的UIImage适应新尺寸而不缩小尺寸?缩小比例可能会降低图片的质量。
顺便说一句,我试过在CALayer上做,但是虽然CALayer看起来是旋转的,但实际的UIImage仍然是相同的。
提前感谢大家!
答案 0 :(得分:1)
如果您使用UIImageView
来展示您的图片,那么您可以使用UIView
的{{1}}属性来满足您的需求;请看一下this answer。或者,如果您需要自行旋转UIImage(不是图像视图),请查看this answer。