2012-06-14 10 views
14

この質問は申し訳ありませんが、ここでは多くのスレッドを検索しました。私は何も見つかりませんでした。UIImageで中央の四角形を切り抜くには?

質問は:どのようにUIImageで中央の四角形を切り取るのですか?

私はコードを試してみましたが、成功しませんでした。切り抜きが発生しますが、左上隅にあります。

-(UIImage*)imageCrop:(UIImage*)original 
{ 
    UIImage *ret = nil; 

    // This calculates the crop area. 

    float originalWidth = original.size.width; 
    float originalHeight = original.size.height; 

    float edge = fminf(originalWidth, originalHeight); 

    float posX = (originalWidth - edge)/2.0f; 
    float posY = (originalHeight - edge)/2.0f; 


    CGRect cropSquare = CGRectMake(posX, posY, 
            edge, edge); 


    // This performs the image cropping. 

    CGImageRef imageRef = CGImageCreateWithImageInRect([original CGImage], cropSquare); 

    ret = [UIImage imageWithCGImage:imageRef 
           scale:original.scale 
         orientation:original.imageOrientation]; 

    CGImageRelease(imageRef); 

    return ret; 
} 

答えて

15

さらに詳しい情報を追加すると、私は写真のキャプチャ後にこの「クロップ」を使用しています。

いくつかのテストの後、私はうまくいくものを見つけました。

// If orientation indicates a change to portrait. 
if(original.imageOrientation == UIImageOrientationLeft || 
    original.imageOrientation == UIImageOrientationRight) 
{ 
    cropSquare = CGRectMake(posY, posX, 
          edge, edge); 

} 
else 
{ 
    cropSquare = CGRectMake(posX, posY, 
          edge, edge); 
} 
関連する問題