UIImage 大小(宽度和高度)在旋转后减小

Posted

技术标签:

【中文标题】UIImage 大小(宽度和高度)在旋转后减小【英文标题】:UIImage size(width & Height) is decreasing after rotation 【发布时间】:2016-04-06 10:02:29 【问题描述】:

我正在根据比例值旋转 UIImage。我的 Scale 和 Rotation 运行良好,但问题是旋转 uiimage 后,图像大小(宽度和高度)正在减小。知道如何解决这个问题吗?Image before Rotation

Image After Rotation

我正在使用的代码:

 UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.image.size.width, self.image.size.height)];
    CGAffineTransform t = CGAffineTransformMakeRotation(self.lastContentOffset/5);
    rotatedViewBox.transform = t;
    CGSize rotatedSize = rotatedViewBox.frame.size;

    // Create the bitmap context
    UIGraphicsBeginImageContext(rotatedSize);
    CGContextRef bitmap = UIGraphicsGetCurrentContext();

    // Move the origin to the middle of the image so we will rotate and scale around the center.
    CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);

    //   // Rotate the image context
    CGContextRotateCTM(bitmap, 5.0);

    // Now, draw the rotated/scaled image into the context
    CGContextScaleCTM(bitmap, 1.0, -1.0);
    CGContextDrawImage(bitmap, CGRectMake(-self.image.size.width/2 , -self.image.size.height/2 , self.image.size.width, self.image.size.height), \[self.rotatedImage CGImage\]);

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    self.rotatedImage = newImage;

【问题讨论】:

【参考方案1】:

假设您的图像大小为 HxH。旋转 45 度(M_PI/2 弧度)后,其大小将变为 sqrt(2)*H x sqrt(2)*H。所以你需要更大的上下文来适应旋转的图像。否则图片的边角会被切掉。此外,您将需要更大的UIImageView 以适应更大的图像。否则它将自动缩放到UIImageView 大小。

【讨论】:

谢谢伙计,我已经改变了上下文大小,它工作@s0urcer

以上是关于UIImage 大小(宽度和高度)在旋转后减小的主要内容,如果未能解决你的问题,请参考以下文章

UIImage 未根据 UIImageView 大小宽度和高度调整大小

获取 UIImage 的大小(字节长度)而不是高度和宽度

Swift 4:设备旋转后 UI 无法更新

通过保持纵横比和宽度调整 UIImage 的大小

按宽度按比例调整 UIImage 的大小

使用 Swift (AutoLayout) 固定 UIImage 的宽度和高度