如何在UIImage中裁剪一个居中的正方形?

15

非常抱歉这个问题,但我在 S.O. 上搜索了很多帖子,却没有找到答案。

问题是:如何裁剪 UIImage 中心的正方形?

我尝试了下面的代码,但没有成功。虽然进行了裁剪,但是在左上角。

-(UIImage*)imageCrop:(UIImage*)original
{
    UIImage *ret = nil;

    // This calculates the crop area.

    float originalWidth  = original.size.width;
    float originalHeight = original.size.height;

    float edge = fminf(originalWidth, originalHeight);

    float posX = (originalWidth   - edge) / 2.0f;
    float posY = (originalHeight  - edge) / 2.0f;


    CGRect cropSquare = CGRectMake(posX, posY,
                                   edge, edge);


    // This performs the image cropping.

    CGImageRef imageRef = CGImageCreateWithImageInRect([original CGImage], cropSquare);

    ret = [UIImage imageWithCGImage:imageRef
                              scale:original.scale
                        orientation:original.imageOrientation];

    CGImageRelease(imageRef);

    return ret;
}
1个回答

16

补充更多信息,我是在照片捕获后使用这个“crop”。

经过一些测试,我找到了可行的方法。

// If orientation indicates a change to portrait.
if(original.imageOrientation == UIImageOrientationLeft ||
   original.imageOrientation == UIImageOrientationRight)
{
    cropSquare = CGRectMake(posY, posX,
                            edge, edge);

}
else
{
    cropSquare = CGRectMake(posX, posY,
                            edge, edge);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接