[英]How to get thumbnail image using SDWebImage?
在用戶選擇圖像之前,我不希望從服務器下載圖像。 我想顯示圖像的縮略圖。 如何獲取縮略圖? 我可以使用服務器上的URL下載完整圖像。
如果服務器上的圖像約為1MB,如何獲取其縮略圖版本?
有兩種方法可以實現您的目標:
方法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
從服務器獲取原始圖像。
您無法通過ios device
對服務器進行更改。 您可以將數據放入服務器或從中獲取數據。 因此,如果大圖像存儲在服務器上,則無法從ios使其縮略圖。 您只需下載它,一旦圖像進入設備,就可以根據需要進行修改。
因此,將同一映像的兩個副本保存到服務器是一種更好的方法,從服務器端來講這並不是一件艱巨的任務。 :)
當您具有絕對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;
});
}
}];
使用圖像模式。
並將角半徑設為圖像視圖高度或寬度的一半。 因此它將變成圓形圖像視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.