2016-04-06 5 views
2

Hallo Ich verwende SDWebImage für das Laden von Bildern ok das ist in OrdnungWie man Bilder laden mit SDWebImage Bibliothek

Hier habe ich Bilder von Dienstleistungen immer bin und ich möchte diese Bilder, um die Größe und ich möchte, dass sie laden, mit SDWebImage

dafür schrieb ich den Code unter

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

aber in dem obigen Code, ich bin in Finalstring null-Wert zu bekommen. Wie kann ich die Größe ändern und wie kann ich Bilder mit SDWebImage laden?

+0

Warten. das ist komisch. 'sd_setImageWithURL:' benötigt eine URL des Bildes (z. B. http://example.com/image.jpg) anstelle der Zeichenfolgendarstellung der Bilddaten. Sie sollten 'Obj.imageYH' verwenden. 'SDWebImage' ist eine Bibliothek zum asynchronen Laden von Bildern aus dem Internet. Sie missbrauchen es, um ein Bild in der Größe zu laden. – Raptor

Antwort

1

Verwendung unter der Linie von Codes anstelle des Codes gehören:

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

Das ist nicht mit der Frage überhaupt verbunden. – Raptor

+0

@Raptor danke für die Aufmerksamkeit. Ich habe die Antwort aktualisiert. –

+0

@Krisch überprüfe meine Antwort Ich habe die Antwort aktualisiert –

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

Vergessen Sie nicht,

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

#import Fehler in dieser Zeile zeigt – Krish

+0

, was der Fehler ist –

+0

[manager downloadWithURL: url Delegierte: self Optionen: 0 Erfolg:^(UIImage * Bild) { cell.profilePicture.image = [self imageByScalingAndCroppingForSize: CGSizeMake (zelle.profilbild.frame.size.width, zelle.profilbild.frame.size.height) image: image]; } Fehler: Null]; – Krish

2

Schritt 1: Installation von SDWebImage

zu Beginnen Sie mit, stellen Sie sicher, dass Sie die neueste Version von SDWebImage verwenden und über CocoaPods installiert (nicht empfohlen, die Bibliothek manuell zu verknüpfen).

Ihre Podfile sollten diese Zeile enthalten:

pod 'SDWebImage', '~>3.7' 

Danach wird das Xcode-Projekt schließen und pod install in Ihrem Projektverzeichnis ausführen. Verwenden Sie den Xcode Arbeitsbereich nach der Installation.


Schritt 2:

allererst die Codes können Sie den Import die Bibliothek haben

#import <SDWebImage/UIImageView+WebCache.h> 

In diesem Moment versuchen, den Arbeitsbereich zu reinigen & bauen. Wenn alles gut läuft, sollte das Projekt ohne Fehler gebaut werden.

Dann in Ihrer Funktion:

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

getan.