如何将 UIImage 调整为特定大小

Posted

技术标签:

【中文标题】如何将 UIImage 调整为特定大小【英文标题】:How can I resize the UIImage to specific size 【发布时间】:2012-07-03 19:41:25 【问题描述】:

在我的应用程序中,我正在用相机拍照并以 320*320 UIView 显示。但由于图像分辨率高于UIView,它看起来有点挤压。有什么办法可以调整该图像的大小吗?

【问题讨论】:

@Andreas:这是完全不同的问题。那个谈到内容调整。我对保留图像的所有上下文更感兴趣,所以即使我对图像进行一些操作,如裁剪或切片,我也不会丢失它的内容...... 【参考方案1】:

以下是在保持其纵横比的同时调整图像大小的方法。下面的代码来自UIImage 的类别:

+ (UIImage*)imageWithImage:(UIImage *)image 
              scaledToSize:(CGSize)newSize


    float heightToWidthRatio = image.size.height / image.size.width;
    float scaleFactor = 1;
    if(heightToWidthRatio > 0) 
        scaleFactor = newSize.height / image.size.height;
     else 
        scaleFactor = newSize.width / image.size.width;
    

    CGSize newSize2 = newSize;
    newSize2.width = image.size.width * scaleFactor;
    newSize2.height = image.size.height * scaleFactor;

    UIGraphicsBeginImageContext(newSize2);
    [image drawInRect:CGRectMake(0,0,newSize2.width,newSize2.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;

【讨论】:

如果这是一个类别,那么图像参数需要什么?不妨改用self【参考方案2】:

我这样做了,但首先我将照片选择器启用为可编辑,因此它是默认的 1:1 纵横比,如下所示:

imgPicker.allowsImageEditing = YES; //I think this is what you're really looking for

然后我使用此方法调整图像大小:

-(UIImage*)resizeImage:(UIImage*)image
    CGSize newSize = CGSizeMake(480.0, 480.0);
    UIGraphicsBeginImageContext(newSize);
        [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

【讨论】:

我不是在寻找 imagePickerEditing 但它肯定是我不知道的。谢谢分享.. 是的,我的意思是,如果您使用的是 1:1 比例,那么如果它与您的用户界面非常契合,这并不是一个糟糕的选择。它让用户可以使用他们习惯的界面进行缩放和定位。

以上是关于如何将 UIImage 调整为特定大小的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImage 旋转 90 度?

UIImage 未根据 UIImageView 大小宽度和高度调整大小

为纵向和横向模式调整 UIImage 的大小

创建特定大小的 UIImage

如何调整 UIImage 的大小以减小上传图像的大小

在 Swift 4 上调整 UIImage 视图的大小