iOS:缩小图像并使高度:宽度= 1:1

时间:2012-10-29 08:33:15

标签: ios uiimage uiimagepickercontroller

以下是iOS开发人员中心的相机演示,下面是用于缩小图像的功能。 我遇到的问题是图像被拉伸而其宽度<1。高度。 但是,我需要将图像缩放并缩小为正方形(宽度:高度= 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;
}  

1 个答案:

答案 0 :(得分: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;    
}

如果您不打算保持宽高比,您的图像肯定会看起来很紧张。