UIImageのリサイズとトリミング

UIImageで大きさを拡大または縮小しようとした場合、ちょっとややこしいので、忘れないようにメモしておきます。


拡大/縮小(サイズ指定)

UIImage *imgOriginal = [UIImage imageNamed:@"hoge.png"];    // リサイズ前のUIImage
UIImage *imgResized;    // リサイズ後のUIImage
CGFloat width = 400;    // リサイズ後の幅のサイズ
CGFloat height = 300;   // リサイズ後の高さのサイズ
    
UIGraphicsBeginImageContext(CGSizeMake(width, height));
[imgOriginal drawInRect:CGRectMake(0, 0, width, height)];
imgResized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


拡大/縮小(割合指定)

UIImage *imgOriginal = [UIImage imageNamed:@"hoge.png"];    // リサイズ前のUIImage
UIImage *imgResized;         // リサイズ後のUIImage
CGFloat RatioWidth = 0.5;    // リサイズ後の幅の割合
CGFloat RatioHeight = 0.5;   // リサイズ後の高さの割合
    
CGSize sizeResize = CGSizeMake(imgOriginal.size.width*RatioWidth,
                           imgOriginal.size.height*RatioHeight);
UIGraphicsBeginImageContext(sizeResize);
[imgOriginal drawInRect:CGRectMake(0, 0, sizeResize.width, sizeResize.height)];
imgResized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


トリミング

UIImage *imgOriginal = [UIImage imageNamed:@"hoge.png"];    // リサイズ前のUIImage
UIImage *imgResized;  // 切り取り後UIImage
CGRect rect = CGRectMake(100, 100, 300, 200);  // 切り取る場所とサイズ(x, y, w, h)
    
UIGraphicsBeginImageContext(rect.size);
[imgOriginal drawAtPoint:rect.origin];
imgResized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();