UIImageの一部を切り抜く方法

画像の一部分を切り抜いたイメージを作成する方法です。
画像のトリミングや画像を複数枚に切り出す時などに使用して下さい。


// image : 元の画像
// rect  : 切り抜く範囲
-(UIImage*)clipImage:(UIImage*)image rect:(CGRect)rect
{
    // イメージの解像度に従いrectも換算
    float scale = image.scale;
    CGRect cliprect = CGRectMake(rect.origin.x * scale, rect.origin.y * scale,
                                 rect.size.width * scale, rect.size.height * scale);
    
    // ソース画像からCGImageRefを取り出す
    CGImageRef srcImgRef = [image CGImage];
    
    // 指定された範囲を切り抜いたCGImageRefを生成しUIImageとする
    CGImageRef imgRef = CGImageCreateWithImageInRect(srcImgRef, cliprect);
    UIImage* resultImage = [UIImage imageWithCGImage:imgRef scale:scale orientation:image.imageOrientation];
    
    // 後片付け
    CGImageRelease(imgRef);
        
    return resultImage;
}


@2xなどのratina用イメージにも対応してます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です