0

横向正确调整大小,但纵向图像未正确调整大小。请有人帮我解决这个问题。代码 :-

CGSize newSize = CGSizeMake(width, height);

float widthRatio = newSize.width/image.size.width*image.scale;

float heightRatio = newSize.height/image.size.height*image.scale;

NSLog(@" image size %f %f %f",image.size.width,image.size.height,image.scale);

if(widthRatio > heightRatio)

    newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio);

 else

    newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio);

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
4

2 回答 2

0

几天前我遇到了非常相似的问题。UIImageView我试图使用resizeImage此处答案之一中提到的方法将较大尺寸的图像设置为较小的尺寸。但它不能解决我的问题。所以这是我用来解决问题的方法,

yourImageView.contentMode = UIViewContentModeCenter;
[yourImageView setClipsToBounds:YES];

或者

[yourImageView setContentMode:UIViewContentModeScaleAspectFill];
yourImageView.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight );
[yourImageView setClipsToBounds:YES];

是的,它不会缩放您的图像,但您的图像不会被压扁。我用这个解决了我的问题,希望它可以解决你的问题。

于 2014-03-21T11:04:17.137 回答
0

尝试这个:

- (UIImage*)resizeImage:(UIImage *)image imageSize:(CGSize)size {
    CGFloat imageWidth = image.size.width;
    CGFloat imageHeight = image.size.height;
    CGFloat requiredWidth = (imageWidth * size.height) / imageHeight;

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(requiredWidth, size.height), NO, [UIScreen mainScreen].scale);
    [image drawInRect:CGRectMake(0, 0, requiredWidth, size.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    //here is the scaled image which has been changed to the size specified
    UIGraphicsEndImageContext();
    return newImage;
}
于 2014-03-21T10:54:16.980 回答