2010-05-11 142 views
1

在我的應用我爲使用如下代碼裁剪所拍攝的圖像: -如何在iPhone中裁剪圖像?

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
#ifdef _DEBUG 
    NSLog(@"frmSkinImage-imagePickerController-Start"); 
#endif 

    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    //======================================= 
    UIImage *image =imageView.image; 
    CGRect cropRect = CGRectMake(100, 100, 125,128); 
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect); 
    [imageView setImage:[UIImage imageWithCGImage:imageRef]]; 
    CGImageRelease(imageRef); 
    //=================================================== 
    //imgglobal = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    // for saving image to photo album 
    //UIImageWriteToSavedPhotosAlbum(imageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), self); 
    [picker dismissModalViewControllerAnimated:YES]; 

#ifdef _DEBUG 
    NSLog(@"frmSkinImage-imagePickerController-End"); 
#endif 
} 

但我的問題是,當我用相機拍下照片裁剪拍攝的圖像,圖像旋轉,向右90度並在我使用照片庫的情況下,它完美的作品。

所以你可以過濾我的上述代碼,知道我錯在哪裏。

請幫我出其迫切 由於事先

回答

1

的CGImage是沒有元數據一個UIImage,並因此失去了方向信息。我建議你獲取原始[UIImage imageOrientation]的方向,存儲它,然後將其應用到最終圖像。

如果這樣不起作用,請嘗試根據原稿的方向將CGAffineTransformMakeRotation(90.0*0.0174532925);應用到最終圖像。

0

最快和最簡單的方法是看看NYXImagesKit。用UIImage+Resizing類別可以裁剪圖像。從文檔:

的UIImage +調整大小

此類別可用於作物或縮放圖像。

裁剪

您可以通過9種不同的方式裁剪圖像:

頂部左上方中心右上左下底部中間右下 左中右中心中心

的UIImage *裁剪= [myImage cropToSize:(CGSize){width,height} usingMode:NYXCropModeCenter];

NYXCropMode是一個枚舉類型,可以在頭文件中找到,它使用 來表示上面的9種模式。