2013-12-09 29 views
0

嘿傢伙我正在做一些與UIImagePickerController圖像編輯。下面是一些代碼在imagePickerController:didFinishPickingMediaWithInfoUIImagePickerControllerEditedImage得到零

UIImage *editedImg = [info objectForKey:UIImagePickerControllerEditedImage]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:editedImg]; 
    CGRect imgFrm = imgView.frame; 
    float rate = imgFrm.size.height/imgFrm.size.width; 
    imgFrm.size.width = size; 
    imgFrm.size.height = size * rate; 
    imgFrm.origin.x = 0; 
    imgFrm.origin.y = (size - imgFrm.size.height)/2; 
    [imgView setFrame:imgFrm]; 

    UIView *cropView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size, size)]; 
    [cropView setBackgroundColor:[UIColor blackColor]]; 
    [cropView addSubview:imgView]; 

    UIImage *croppedImg = [MyUtil createUIImageFromUIView:cropView]; 

以上是設置在一個尺寸大小*視圖圖像,並且從圖繪製圖像時通過選擇器返回的圖像的高度比尺寸小。

這裏是createUIImageFromUIView:(UIView*)view的代碼:

+ (UIImage *)createUIImageFromUIView:(UIView *)view 
{ 

    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 2.0); 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:ctx]; 

    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return viewImage; 
} 

我的問題是:當調試, 'editedImg'(在第一行中所定義的)只是顯示 '零'。但是,以下代碼運行良好。我正確地得到了corpView(顯示'nil'),並得到裁剪後的圖像,並可以將它編碼爲base64編碼的字符串以發送到服務器端。 我只想知道爲什麼editedImg是零(由[infoObjectForKey:UIImagePickerControllerEditedImage]返回,但是當我選擇在調試模式下打印信息時,控制檯中的輸出不是零)?

+0

我想你想'CGSize imgSize = croppedImg.size'! – Maulik

+0

@Maulik,謝謝你的回覆。對不起,我沒有定義'大小',這是一個浮點值(320)。 – Sabbath

+0

沒有得到你,你可以更具體的關於你的要求 – Maulik

回答

1

的editdImg得到零,嘗試:

UIImage *editedImg = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

獲取文件大小:

- (long long) fileSizeAtPath:(NSString*) filePath{ 
    NSFileManager* manager = [NSFileManager defaultManager]; 
    if ([manager fileExistsAtPath:filePath]){ 
     return [[manager attributesOfItemAtPath:filePath error:nil] fileSize]; 
    } 
    return 0; 
} 

最良好的祝願!

+0

嗨@wormlxd,謝謝你的回答。我發現這只是我的錯誤。請閱讀我自己的答案。無論如何,謝謝。 – Sabbath

0

我希望我能正確理解你的問題。

您可以通過

UIImage *croppedImg = [MyUtil createUIImageFromUIView:cropView]; 
NSData *dataForImage = UIImagePNGRepresentation(croppedImg); 

讓你的裁切的圖像尺寸現在,您可以檢查長度

if (dataForImage.length) 
{ 

} 
+0

感謝您的回覆。我知道從UIImage製作NSData的方法以及檢查大小的方法。但如果corpIdImg是零,我不能做任何事情。 – Sabbath

+0

@Sabbath:你的問題是'我只想知道如何獲得裁剪圖像的大小(長度?),以便我可以在必要時進行一些壓縮?「否? – Maulik

+0

@Sabbath:或者你想知道爲什麼你的'createUIImageFromUIView'方法返回nil? – Maulik