4

我使用UIImagePickerController'sUIView作为我自己的子视图的UIViewController's UIView子视图。没什么特别的,当我拍照时问题就来了。正在发生的事情是这样的:

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

在此处输入图像描述

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

在此处输入图像描述

从我看到的图像中,Y 轴的位置要高一些。有没有办法解决这个问题?我不在乎是否必须对以下图像中出现的图像进行某种裁剪:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;

当我在 上使用UIViewContentModeScaleAspectFill时,我可能会理解这种行为UIImageView contentMode,但我希望能够从我想要开始“查看”的位置指定 Y。

4

1 回答 1

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;
}

因为图片正在向左旋转。

于 2013-10-19T21:05:10.097 回答