Krish
Krish

Reputation: 4242

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?

Upvotes: 3

Views: 5916

Answers (3)

Raptor
Raptor

Reputation: 54208

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.

Upvotes: 2

Payal Maniyar
Payal Maniyar

Reputation: 4402

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

Upvotes: 1

amit soni
amit soni

Reputation: 2163

 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>

Upvotes: 1

Related Questions