我有这个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
答案 0 :(得分:0)
查看UIImage类的imageOrientation属性。您可以拥有320宽和480高的图像,但具有横向方向。这包含在EXIF信息中,并且由查看程序决定使用此方向信息来适当地旋转图像。只是检查图像的宽度和高度不足以了解方向,这会导致您看到的拉伸。