iOSで、画像(UIImage)を切り取る方法。
参考そのまま持ってきたもの
UIImage* clipImage(UIImage* image, 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;
}
実に簡単。
画像の解像度も考慮してくれているので、
元の(scaleしない)イメージサイズを基準にして、切り取りたい範囲のRectを第2引数に渡せば良い。
Rectは左上が原点。
PR