如何使用 SDWebImage 获取缩略图?

How to get thumbnail image using SDWebImage?

在用户选择图像之前,我不想从服务器下载图像。我想显示图像的缩略图。如何获取缩略图? 我可以使用 URL 从服务器下载完整图像。

如果服务器上的图片是 1MB,如何获取其缩略图版本?

有两种方法可以实现您的目标:

方式一:

您无法获取缩略图。如果您的文件大小为 1 MB,那么您必须使用 SDWebImage 下载它。下载完成后创建图像缩略图。现在您可以删除 1MB 的图像了。

创建缩略图的代码:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size
{

CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height);
CGFloat width = image.size.width * scale;
CGFloat height = image.size.height * scale;
CGRect imageRect = CGRectMake((size.width - width)/2.0f,
                              (size.height - height)/2.0f,
                              width,
                              height);

UIGraphicsBeginImageContextWithOptions(size, NO, 0);
[image drawInRect:imageRect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
return newImage;
}

方式二:

在服务器端,您必须同时保留图像原始图像和缩略图。所以首先使用 SDWebImage 加载缩略图。当用户单击缩略图时,使用 SDWebImage.

从服务器获取原始图像

当你有绝对 URL 并且只想使用 SDWebImage 显示图像时。

使用下面的代码

SDWebImageManager *manager = [SDWebImageManager sharedManager];
    [manager downloadImageWithURL:[NSURL URLWithString:strDisplayURL]
                          options:0
                         progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                             // progression tracking code
                         }
                        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

                            if (image)
                            {

                              dispatch_async(dispatch_get_main_queue(), ^{

                                    profileImageView.image = image;

                                });

                            }

                        }];

使用图像模式。

并使圆角半径为图像视图高度或宽度的一半。所以它会变成圆形图像视图。

您无法从 ios device 更改服务器。您可以将数据放入服务器或从中获取数据。因此,如果大图像存储在服务器上,则无法将其设为 ios 的缩略图。您可以下载它,一旦图像出现在您的设备上,您就可以根据需要进行修改。

因此,将同一图像的两个副本保存到服务器是更好的方法,而且从服务器端来说这不是一项艰巨的任务。 :)