2016-04-06 5 views
2

Привет Я использую SDWebImage для загрузки изображений хорошо, что хорошоКак загружать изображения с помощью SDWebImage библиотеки

Здесь я получаю изображения из услуг, и я хочу, чтобы изменить эти изображения, и я хочу, чтобы загрузить их с помощью SDWebImage

для этого я написал код ниже

Obj.imageYH---> this is imageURL 

    NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:Obj.imageYH]]; 

    UIImage *actualImage = [UIImage imageWithData:imageData]; 
    UIGraphicsBeginImageContext(CGSizeMake(150, 150)); 
    [actualImage drawInRect:CGRectMake(0,0,150, 150)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *smallData = UIImagePNGRepresentation(newImage); 

    NSString *Finalstring = [[NSString alloc] initWithData:smallData encoding:NSUTF8StringEncoding] ; 


    [Mainimage sd_setImageWithURL:[NSURL URLWithString: Finalstring] placeholderImage:[UIImage imageNamed:@"collectionViewIcon.png"]]; 

, но в приведенном выше коде, я получаю нулевое значение в Finalstring. Как изменить размер и как загрузить изображения с помощью SDWebImage?

+0

Подождите. это странно. 'sd_setImageWithURL:' требуется URL-адрес изображения (например, http://example.com/image.jpg) вместо строкового представления данных изображения. Вы должны использовать 'Obj.imageYH'. 'SDWebImage' - это библиотека для загрузки изображения из Интернета асинхронно. Вы неправильно используете его для загрузки измененного изображения. – Raptor

ответ

1

Использование ниже линии кодов вместо кода:

UIImage *actualImage = [UIImage imageWithData:imageData]; 
UIGraphicsBeginImageContext(CGSizeMake(150, 150)); 
[actualImage drawInRect:CGRectMake(0,0,150, 150)]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *smallData = UIImagePNGRepresentation(newImage); 

[smallData writeToFile:Finalstring atomically:YES];// Finalstring is file path of resize image 

[Mainimage sd_setImageWithURL:[NSURL URLWithString: Finalstring] placeholderImage:[UIImage imageNamed:@"collectionViewIcon.png"]]; 
+0

Это совсем не связано с вопросом. – Raptor

+0

@Raptor благодарит за внимание. Я обновил ответ. –

+0

@Krish проверить мой ответ Я обновил ответ –

1
SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadWithURL:url delegate:self options:0 success:^(UIImage 
*image) { 
    cell.profilePicture.image = [self imageByScalingAndCroppingForSize:CGSizeMake(cell.profilePicture.frame.size.width, 
cell.profilePicture.frame.size.height) image:image]; } failure:nil]; 

Не забудьте включить

#import <SDWebImage/UIImageView+WebCache.h> 
@interface YourViewController : UIViewController <SDWebImageManagerDelegate> 
+0

#import ошибка показывает в этой строке – Krish

+0

что ошибка –

+0

[менеджер downloadWithURL: URL Делегат: варианты самоуправления: 0 успех:^(UIImage * изображение) { cell.profilePicture.image = [self imageByScalingAndCroppingForSize: CGSizeMake (cell.profilePicture.frame.size.width, cell.profilePicture.frame.size.height) image: image]; } failure: nil]; – Krish

2

Шаг 1: Установка SDWebImage

К начните с того, что вы используете последнюю версию SDWebImage , и установлен через CocoaPods (не рекомендуется связывать библиотеку вручную).

Ваш Podfile должен содержать следующую строку:

pod 'SDWebImage', '~>3.7' 

После этого закройте проект Xcode и запустить pod install в каталоге проекта. Используйте Xcode рабочее пространство после установки.


Шаг 2: Используя коды

Прежде всего, у вас есть ввозная библиотека

#import <SDWebImage/UIImageView+WebCache.h> 

На данный момент, попробуйте очистить & построить рабочую область. Если все будет хорошо, проект должен быть построен без ошибок.

Тогда, в функции:

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadImageWithURL:Obj.imageYH 
        options:0 
       progress:^(NSInteger receivedSize, NSInteger expectedSize) { 
        // progression tracking code, optional. 
        // You can set the progress block to nil 
       } 
       completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 
        if (image) { 
         // Resize your image here, then set it to UIImageView 
         Mainimage.image = [UIImage imageWithData:UIImagePNGRepresentation(image) scale:0.5f]; 
         // resize to 0.5x, function available since iOS 6 
        } 
       }]; 

сделано.

Смежные вопросы