美文网首页
iOS 缩略图

iOS 缩略图

作者: 风儿吹啊吹 | 来源:发表于2019-10-14 21:41 被阅读0次

iOS App 大都有列表页,需要在列表项中显示图片。图片基本上是从服务端获取,如果服务端没有返回缩略图,对于小图片还好,列表滚动时不会有很大影响。然而从服务端获取的图片基本上都是大图,列表滚动就会造成卡顿的效果,这时就需要我们自己通过给定图片来获取缩略图。

通过以下代码实现:获取原始图片中间部分缩略图

- (UIImage *)getThumbnailWithTargetSize:(CGSize)targetSize {
    
    CGSize imageSize = self.size;
    
    if (CGSizeEqualToSize(targetSize, CGSizeZero)) {
        return self;
    }
    
    if (targetSize.width > imageSize.width && targetSize.height > imageSize.height) {
        return self;
    }
    
    CGFloat scale = MAX(targetSize.width / imageSize.width, targetSize.height / imageSize.height);
    CGSize scaleSize = CGSizeMake(imageSize.width * scale, imageSize.height * scale);
    
    UIGraphicsBeginImageContextWithOptions(targetSize, false, 0);

    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, targetSize.width, targetSize.height)];
    [bezierPath addClip];

    CGRect rect = CGRectMake((targetSize.width - scaleSize.width) / 2, (targetSize.height - scaleSize.height) / 2, scaleSize.width, scaleSize.height);
    [self drawInRect:rect];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

相关文章

网友评论

      本文标题:iOS 缩略图

      本文链接:https://www.haomeiwen.com/subject/gmpdmctx.html