UIImagePickerController的视图大小错误

时间:2013-10-19 20:33:08

标签: ios uiimageview uiimage uiimagepickercontroller

我使用UIImagePickerController的{​​{1}}作为我自己的UIView UIViewController's子视图的子视图。没什么特别之处,问题出现在我拍照时。发生的事情是这样的:

1我从UIView视图中看到的图片是这样的:

enter image description here

2这是我拍照时所看到的(UIImagePickerController )并将其放在[self.imagePicker takePicture];

enter image description here

从我看到的Y轴出来的图像有点高。有什么方法可以解决这个问题吗?我不在乎是否必须使用以下形式的图像进行某种裁剪:

UIImageView

我可能会理解这种行为,因为我在- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info; UIViewContentModeScaleAspectFill上使用了UIImageView,但我希望能够从我想要开始的地方指定Y“ “ 在。

1 个答案:

答案 0 :(得分:4)

能够在28分钟之后弄清楚这一点,哦,好吧,在这里:

CGImageRef imageRef = CGImageCreateWithImageInRect([imageTaken CGImage], CGRectMake(0.0f, 0.0f, 960.0f, 960.0f));

[selectedImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

通过在960.0f进行裁剪,我能够保持图片的原始质量,并且能够分辨出哪个Y我能够“剪切”它。我还补充说:

+ (UIImage*)rotate:(UIImage*)image andOrientation:(UIImageOrientation)orientation;
{
    UIGraphicsBeginImageContext(image.size);

    CGContextRef context=(UIGraphicsGetCurrentContext());

    if (orientation == UIImageOrientationRight) {
        CGContextRotateCTM (context, 90/180*M_PI) ;
    } else if (orientation == UIImageOrientationLeft) {
        CGContextRotateCTM (context, -90/180*M_PI);
    } else if (orientation == UIImageOrientationDown) {
        // NOTHING
    } else if (orientation == UIImageOrientationUp) {
        CGContextRotateCTM (context, 90/180*M_PI);
    }

    [image drawAtPoint:CGPointMake(0, 0)];
    UIImage *img=UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

因为图片将向左旋转。