【问题标题】:resize uiimage and add whitespace调整 uiimage 大小并添加空格
【发布时间】:2012-05-11 15:36:20
【问题描述】:

我在谷歌上搜索了一下,似乎找不到解决方案。这是我的问题。我需要将 UIImage 调整为特定大小 - 即大小,以便宽度和高度都是 2 的幂。我的图像来自相机,因此尺寸不是 2 的幂。我需要保留整个图像,同时保持正确的纵横比——即纵横匹配模式。我知道如何调整 UIImage 的大小,但我不知道如何调整图像大小并在顶部和底部适当地添加空白以保持适当的整体图像大小,同时保持正确的方面。有人对此有见解吗?

顺便说一句,这是我当前的调整大小代码(只是调整大小)

- (UIImage *) resizeImage:(UIImage *)initialImage
{
    CGSize newSize = CGSizeMake(256, 256);
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [initialImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

我尝试使用 this 博客,但当我为内容模式指定 UIViewContentModeScaleAspectFit 时,它确实为我提供了正确的图像大小。

【问题讨论】:

    标签: iphone ios uiimage image-resizing


    【解决方案1】:

    一个简单的方法是

    将您的图像放入 UIImageView,使用空白和白色背景颜色设置您想要的大小,然后设置 UIViewContentModeScaleAspectFit 模式

    然后将其转换为 UIImage

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:yourFrame];
    imageView.image = yourImage;
    imageView.contentMode = UIViewContentModeScaleAspectFit ;
    imageView.backgroundColor = [UIColor whiteColor];
    
    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, imageView.opaque, 0.0);
    [imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
    //the image you want
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

    你明白了

    【讨论】:

      【解决方案2】:

      您拥有的解决方案大部分已经存在。只需更改 [initialImage drawInRect:] 的矩形。解决方案看起来像这样(未经测试!):

      CGSize size = initialImage.size;
      CGFloat max = (size.width > size.height) ? size.width : size.height;
      CGSize newSize = CGSizeMake(size.width * newSize.width / max, size.height * newSize.height / max);
      CGRect rect = CGRectMake((newSize.width-newSize.width)/2.0,
                               (newSize.height-newSize.height)/2.0,
                               newSize.width, newSize.height);
      [initialImage drawInRect:rect];
      

      【讨论】:

        猜你喜欢
        • 2018-09-23
        • 1970-01-01
        • 2015-11-20
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        相关资源
        最近更新 更多