代码之家  ›  专栏  ›  技术社区  ›  BlueDolphin

有人能解释iPhone4上iPhone相机拍摄的图像的宽度/高度吗?

  •  0
  • BlueDolphin  · 技术社区  · 15 年前

    我正在使用

    - (void)imagePickerController:(UIImagePickerController *)picker 
      didFinishPickingImage:(UIImage *)image
          editingInfo:(NSDictionary *)editingInfo
    

    拍摄图像。
    然后使用

      CGImageRef imgRef = image.CGImage;
    
     CGFloat width = CGImageGetWidth(imgRef);
     CGFloat height = CGImageGetHeight(imgRef);
    

    由于某种原因,宽度总是640,高度总是480。不管是肖像画还是风景画。

    我真的很困惑,我在Portraint想,应该是320宽,480高,而在景观模式下,应该是480宽,320高。

    我错过了什么?如何获得正确的图像宽度和高度。谢谢。

    2 回复  |  直到 15 年前
        1
  •  1
  •   greg    15 年前

    imagePickerController:didFinishPickingImage:editingInfo: 自iOS 3.0起计提折旧。

    尝试使用 imagePickerController:didFinishPickingMediaWithInfo: 看看有没有什么不同。

        2
  •  2
  •   Deniz Mert Edincik    15 年前

    您应该实现如下功能:

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
        CGImageRef ref = image.CGImage;
        int width = CGImageGetWidth(ref);
        int height = CGImageGetHeight(ref);
        NSLog(@"image size = %d x %d", width, height);
    
        UIImage *orig = [editingInfo objectForKey:UIImagePickerControllerOriginalImage];
        ref = orig.CGImage;
        width = CGImageGetWidth(ref);
        height = CGImageGetHeight(ref);
        NSLog(@"orig image size = %d x %d", width, height);
    
        CGRect origRect;
        [[editingInfo objectForKey:UIImagePickerControllerCropRect] getValue:&origRect];
    
        NSLog(@"Crop rect = %f %f %f %f", origRect.origin.x, origRect.origin.y, origRect.size.width, origRect.size.height);
    }
    

    更多讨论请参见: http://discussions.apple.com/thread.jspa?messageID=7841245&tstart=0