Objective c 如何根据图像大小缩放图像视图大小(高度)

Posted

技术标签:

【中文标题】Objective c 如何根据图像大小缩放图像视图大小(高度)【英文标题】:Objective c How to scale image view size (height) as per image size 【发布时间】:2013-09-13 06:59:42 【问题描述】:

在我的应用程序中,我使用图像视图来显示从数据库获取的图像

在数据库中图片有不同的尺寸,

现在我添加了带有框架(10、10、300、220)的图像视图。

我需要根据图像大小调整图像视图的框架,就像 Aspect Fit.

我知道 Aspect fit 可以调整大小,但它可以根据高度比改变宽度

但我需要根据宽度比例增加高度

我需要宽度始终为 300,固定但需要更改高度

例如:

 if image size is 500x1000 i need to resize imageview as 300x600
 if image size is 400x600 i need to resize imageview as 300x450

【问题讨论】:

【参考方案1】:

您可以使用以下符合您要求的代码sn-p

-(UIImage *)adjustImageSizeWhenCropping:(UIImage *)image


    float actualHeight = image.size.height;

    float actualWidth = image.size.width;



    float ratio=300/actualWidth;
    actualHeight = actualHeight*ratio;

    CGRect rect = CGRectMake(0.0, 0.0, 300, actualHeight);
    // UIGraphicsBeginImageContext(rect.size);
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1.0);
    [image drawInRect:rect];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;



【讨论】:

【参考方案2】:
resizedImage = [self imageWithImage:originalImage scaledToSize:CGSizeMake(45,45)]; 

self.imageView.image = resizedImage;

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

    UIGraphicsBeginImageContext(newSize);

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

    UIGraphicsEndImageContext();

    return newImage;

【讨论】:

以上是关于Objective c 如何根据图像大小缩放图像视图大小(高度)的主要内容,如果未能解决你的问题,请参考以下文章

使用 vImageScale_ARGB8888 缩放图像时图像质量受到影响 - Cocoa Objective C

根据屏幕大小缩放图像按钮

根据窗口大小和纵横比缩放图像

使用偏移量缩放 vImage_Buffer - Cocoa Objective C

如何在固定大小的表格单元格内按比例缩放图像

Objective c 图像集大小不失真