在用户选择图像之前,我不想从服务器下载图像。我想显示图像的缩略图。如何获取缩略图? 我可以使用服务器上的URL下载完整的图像。
如果服务器上的图像比如1MB,如何获取缩略图版本?
答案 0 :(得分:3)
实现目标有两种方法:
方式1:
你无法获得缩略图。如果您的文件大小为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;
}
方式2:
在服务器端,您必须同时保留图像原始图像和缩略图。因此,首先使用SDWebImage
加载缩略图。当用户点击缩略图时,使用SDWebImage
从服务器获取原始图像。
答案 1 :(得分:1)
您无法通过ios device
对服务器进行更改。您可以将数据放入服务器或从中获取数据。所以,如果大图像存储在服务器上,那么你就无法从ios制作缩略图。您可以下载它,一旦图像进入您的设备,您就可以根据需要进行修改。
因此,将相同图像的两个副本保存到服务器是更好的方法,这不是服务器端的艰巨任务。 :)
答案 2 :(得分:0)
如果您有绝对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;
});
}
}];
使用图像模式。
使角半径为图像视图高度或宽度的一半。所以它将成为圆形图像视图。