0

这是iOS开发者中心的一个相机演示,用于缩小图像的功能在下面。我遇到的问题是图像在宽度<高度时被拉伸。但是,我需要将图像缩放并缩小为正方形(宽度:高度 = 1:1)。有人对此有解决方案吗?谢谢你们提示提前帮助。

static UIImage *shrinkImage(UIImage *original, CGSize size) {
    CGFloat scale = [UIScreen mainScreen].scale;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL, size.width * scale,
                                             size.height * scale, 8, 0, colorSpace,   kCGImageAlphaPremultipliedFirst);
    CGContextDrawImage(context,
                   CGRectMake(0, 0, original.size.width * scale, original.size.width * scale),
                   original.CGImage);
    CGImageRef shrunken = CGBitmapContextCreateImage(context);
    UIImage *final = [UIImage imageWithCGImage:shrunken];

    CGContextRelease(context);
    CGImageRelease(shrunken);   

    return final;
}  
4

1 回答 1

0
-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    if(newSize.width > newSize.height)
      newSize = CGSizeMake(newSize.height, newSize.height);
    else
      newSize = CGSizeMake(newSize.width, newSize.width);
    UIGraphicsBeginImageContextWithOptions(newSize, YES, [UIScreen mainScreen].scale);    
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;    
}

如果您不打算保持纵横比,您的图像肯定会看起来被拉伸。

于 2012-10-29T08:44:15.580 回答