iPhone在保存时始终拍照

时间:2011-06-23 12:28:50

标签: iphone objective-c uiimageview

我有这个iPhone应用程序,可以让用户拍照并将其保存在数据库中。我的问题是,每次用户拍照并保存时,即使是以纵向模式拍摄,照片也会呈现风景。这会导致人像被拉伸。

这是我拍照时使用的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];

    NSData *imgData=UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);
    UIImage *img=[[UIImage alloc] initWithData:imgData];

    if(img.size.width < img.size.height){
        NSLog(@"width < height");
        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    }
    else{
        NSLog(@"width > height");
        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 460, 320)];
    }

    imageView.image = img;
    [img release];
    [[self view] fillPreviewWithImg: imageView];
    [[self view] setImage: imageView.image];
}

基本上我做的是拍照,创建一个UIImage,检查它是肖像还是风景,创建相应的UIImageView,然后将图像设置为UIImageView。之后,我只需要调用几种方法在主视图中设置图像。

我认为拉伸的问题并不局限于PHP,而是源于Objective-C代码,但我无法真正看到这种行为是如何或为何发生的。

你们中有谁有想法吗?

谢谢,

Masiar

1 个答案:

答案 0 :(得分:0)

查看UIImage类的imageOrientation属性。您可以拥有320宽和480高的图像,但具有横向方向。这包含在EXIF信息中,并且由查看程序决定使用此方向信息来适当地旋转图像。只是检查图像的宽度和高度不足以了解方向,这会导致您看到的拉伸。