谁改变图像的大小? SDWebImage 或 ContentMode

Who change the image's size? SDWebImage or ContentMode

我使用 SDWebImage 设置图像是这样的:

    [self.imageView sd_setImageWithURL:topicModel.large_image] 
        placeholderImage:nil 
        options:0 
        progress:^(NSInteger receivedSize, NSInteger expectedSize) {

    } completed:^(UIImage *image, 
        NSError *error, 
        SDImageCacheType cacheType, 
        NSURL *imageURL) { 
}];

在此之后,我将 imageView 的 contentMode 设置为:

    if (topicModel.isBigPicture) {
        self.imageView.contentMode = UIViewContentModeTop;
        self.imageView.clipsToBounds = YES;
    }else {
        self.imageView.contentMode = UIViewContentModeScaleAspectFill;
        self.imageView.clipsToBounds = NO;
    }

imageView的大小为(355, 200),
图像的大小 比 imageView 大,包括宽度和高度。

众所周知,
如果 topicModel 是 bigPicture,contentMode 将是 UIViewContentModeTop。 UIViewContentModeTop 保持相同大小,只是调整了位置。

但是我发现了一个问题?
在我的例子中,图像的大小将转换为 (300, XXX),XXX 似乎通过 (image.realHeight * 300.0 / image.realWidth)
计算 实际上,我不会更改项目中图像的大小。

这是我的问题:
我的代码有什么问题?
如何让图片的宽度和imageView的宽度一致?

终于找到答案了
原因是我使用了最新版本的 SDWebImage

这是解决方案:-)

如果你想得到原始图像,你必须像这样更改SDWebImage/SDWebImageDecoder.m中的代码:

    CGContextRelease(context);  
    //add this method
     UIImage *decompressedImage = [UIImage imageWithCGImage:decompressedImageRef];

    //delete this method
     UIImage *decompressedImage = [UIImage imageWithCGImage:decompressedImageRef scale:image.scale orientation:image.imageOrientation];
  CGImageRelease(decompressedImageRef);  

    return decompressedImage;
  }

想了解更多详情,可以看下面link
SDWebImage ---- Images from web-url too small when using v. 3.7.4 and above