简体   繁体   中英

How to load images using SDWebImage library

Hi I am using SDWebImage for loading images ok that's fine

Here I am getting images from services and I want to resize those images and I want to load them using SDWebImage

for this I wrote the code below

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"]];

but in the code above, I am getting null value in Finalstring . How can I resize it and how can I load images using SDWebImage ?

Step 1: Installation of SDWebImage

To start with, make sure you're using the latest version of SDWebImage , and installed via CocoaPods (not recommend to link up the library manually).

Your Podfile should contain this line:

pod 'SDWebImage', '~>3.7'

After that, close the Xcode project and run pod install in your project directory. Use the Xcode workspace after installation.


Step 2: Using the codes

First of all, you have the import the library

#import <SDWebImage/UIImageView+WebCache.h>

At this moment, try to Clean & Build the Workspace. If everything goes well, the project should be built without error.

Then, in your function:

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
                     }
                 }];

done.

 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];

Don't forget to include

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

Use below line of codes instead of your code :

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"]];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM