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 に答える