首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UIImagePickerControllerEditedImage获取零

UIImagePickerControllerEditedImage获取零
EN

Stack Overflow用户
提问于 2013-12-09 14:23:34
回答 3查看 1.5K关注 0票数 0

嘿,伙计们,我正在用UIImagePickerController做一些图像编辑。以下是imagePickerController:didFinishPickingMediaWithInfo中的一些代码

代码语言:javascript
复制
    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];

上面是在size*size视图中设置图像,并在picker返回的图像高度小于size时从视图中绘制图像。

下面是createUIImageFromUIView:(UIView*)view的代码:

代码语言:javascript
复制
+ (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’(在第一行定义)只显示'nil‘。但是,下面的代码运行得很好。我正确地获得了corpView(也显示为'nil‘),得到了裁剪的图像,并可以将其编码为base64编码的字符串,以便发送到服务器端。我只想知道为什么editedImg是nil (由info objectForKey:UIImagePickerControllerEditedImage,返回,但当我选择在调试模式下打印信息时,控制台中的输出不是nil)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-09 15:33:42

经过一番搜索,我意外地找到了这个:string value always shows nil in objective-c

这就是为什么我总是在调试模式下看到'nil‘,而代码运行良好的原因。

票数 0
EN

Stack Overflow用户

发布于 2013-12-09 14:54:56

editdImg结果为空,请尝试:

代码语言:javascript
复制
UIImage *editedImg = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

获取文件大小:

代码语言:javascript
复制
- (long long) fileSizeAtPath:(NSString*) filePath{
  NSFileManager* manager = [NSFileManager defaultManager];
  if ([manager fileExistsAtPath:filePath]){
      return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
  }
  return 0;
}

谨致问候!

票数 1
EN

Stack Overflow用户

发布于 2013-12-09 15:00:19

您可以通过以下方式获取裁剪后的图像大小

代码语言:javascript
复制
UIImage *croppedImg = [MyUtil createUIImageFromUIView:cropView];
NSData *dataForImage = UIImagePNGRepresentation(croppedImg);

现在你可以检查长度了

代码语言:javascript
复制
if (dataForImage.length)
{

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20464415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档