调整图像大小保持纵横比
Posted
技术标签:
【中文标题】调整图像大小保持纵横比【英文标题】:Resize image maintaining aspect ratio 【发布时间】:2013-06-26 11:11:03 【问题描述】:我正在开发一个应用程序,用户可以在其中单击图像并上传它们。我的应用程序中有一个按钮,单击它会打开相机模式。用户可以单击图像并查看预览。在预览中,图像看起来不错,并且占据了整个屏幕。稍后我必须在宽度为 110 和高度为 111 的 UIImageView 中显示此图像。当我在其中显示它时,图像会在边缘变形和裁剪。我的主要目标是保持纵横比。
我试过这样做。
- (void)displayCapturedImage
//[self.imageView setImage:self.capturedImage];
CGSize smallSize = CGSizeMake(110, 111);
[self.imageView setImage:[self imageWithImage:self.capturedImage scaledToSize:smallSize]];
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
但这对我不起作用。图像仍然失真。
【问题讨论】:
【参考方案1】:您需要自己计算比例。确定图像需要小多少并将其应用于宽度和高度。
类似
float widthFactor = targetWidth / width;
float heightFactor = targetHeight / height;
if ( widthFactor < heightFactor )
scaleFactor = widthFactor;
else
scaleFactor = heightFactor;
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
if ( widthFactor < heightFactor )
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
else if ( widthFactor > heightFactor )
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
【讨论】:
以上是关于调整图像大小保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章
在 CSS FlexBox 布局中自动调整图像大小并保持纵横比?