拍摄时图像会拉长

时间:2013-05-28 12:17:34

标签: ios objective-c uiimage

我的UIImageView大小为(144,130),捕获后的图像尺寸为(720,960)

我用

重新调整了图像大小
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这里我给出了新的尺码(144,130),因为它是imageview的尺码。即使图像变得拉长。

我应该做些什么改变,以免图像被拉伸?

EDIT-1

UIImage *imageCapture = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
UIImage *finalImage = [self imageByScalingAndCroppingForSize:(imageview.frame.size)];

根据此link

中的答案

EDIT-2

拍摄的图像尺寸为:{720,960}

imageview.frame.size:{144,130}

newSize:{97.5,130}

enter image description here

2 个答案:

答案 0 :(得分:2)

调整大小你必须保持宽高比。只是将您的视图的宽高比与实际图像相匹配,并且不会有任何拉伸的图像...

this可能对您有用

答案 1 :(得分:-1)

您已设置了Imageview属性

imageView.contentMode=UIViewContentModeScaleAspectFit;

如果你正在使用nib,那么在View部分中设置imageview属性 - >模式 - > Aspect Fit

无需调整图片大小。它对我有用。

虽然您想要调整图像大小,但您可以在UIImage类别中使用以下图像

- (UIImage *) scaleProportionalToSize: (CGSize)size
{
    float widthRatio = size.width/self.size.width;
    float heightRatio = size.height/self.size.height;

    if(widthRatio > heightRatio)
    {
        size=CGSizeMake(self.size.width*heightRatio,self.size.height*heightRatio);
    } else {
        size=CGSizeMake(self.size.width*widthRatio,self.size.height*widthRatio);
    }

    return [self scaledToSize:size];
}

- (UIImage *)scaledToSize:(CGSize)newSize
{
    UIGraphicsBeginImageContext(newSize);
    [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    //[newImage autorelease];
    return newImage;
}

当您将图片大小调整为newSize时,您必须考虑到,如果您通过假设10%调整宽度,则必须仅将高度调整10%。