2

我有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)我给出的新尺寸,因为它是imageviews 尺寸。即使图像被拉伸。

我应该进行哪些更改以使图像不会被拉伸?

编辑-1

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

根据此链接中的答案

编辑-2

捕获的图像大小为:{720, 960}

imageview.frame.size : {144, 130}

新尺寸:{97.5, 130}

在此处输入图像描述

4

2 回答 2

2

通过调整大小,您必须保持纵横比。只需将视图的纵横比与实际图像相匹配,就不会出现任何拉伸图像...

可能对你有用

于 2013-05-28T12:21:42.780 回答
-1

您已设置 Imageview 属性

imageView.contentMode=UIViewContentModeScaleAspectFit;

如果您使用的是 nib,则在 View section-> Mode -> Aspect Fit 中设置 imageview 属性

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

尽管您想调整图像大小,但您可以在 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%。

于 2013-05-28T12:26:27.647 回答