【问题标题】: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;
}

但这对我不起作用。图像仍然失真。

【问题讨论】:

    标签: ios objective-c uiimageview aspect-ratio resize-image


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2012-04-15
      • 2012-05-01
      • 2012-11-15
      • 1970-01-01
      • 2021-03-29
      相关资源
      最近更新 更多