2013-11-15 13 views
6

Bir resmi bir URL'den nasıl indirebilirim ve bunu Objective-C kullanarak bilgisayara kaydettirebilir miyim? Bu defa ne var:Bir resmi bir URL'den nasıl indirebilirim ve bilgisayarıma nasıl kaydederim?

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

UIImage *imageFromURL = [self getImageFromURL:@"https://www.google.com/images/srpr/logo11w.png"]; 

[self saveImage:imageFromURL withFileName:@"Google Logo" ofType:@"png" inDirectory:documentsDirectoryPath]; 

UIImage *imageFromWeb = [self loadImage:@"Google Logo" ofType:@"png" inDirectory:documentsDirectoryPath]; 

Xcode NSImage ile değiştirmeye çalışırken, UIImage şikayetçi. Ayrıca, bildirilmemiş bir tanımlayıcı 'benlik' hakkında şikayet ediyor.

Bunu yapmak için bir HTTP araması yapmam gerekiyor. Bunu bana 5. olduğumu açıklayın.

+1

Bu yüzden Mac OS X programı nedir? – Raptor

+0

Evet, Mac OS X bilgisayarının sabit diskine kaydetmeye çalışıyorum. –

+0

Bunun bir iOS uygulaması kullanılarak yapılması (sorunun iOS ile etiketlendiğini) veya bir Mac uygulamasıyla yapılması mı gerekiyor? – rmaddy

cevap

6

Görüntüyü belge dizinine kaydetme kodu.

-(void)saveImagesInLocalDirectory 
{ 
     NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
      NSString *imgName = @"image.png"; 
      NSString *imgURL = @"www.example.com/image/image.png"; 
      NSFileManager *fileManager = [NSFileManager defaultManager]; 
      NSString *writablePath = [documentsDirectoryPath stringByAppendingPathComponent:imgName]; 

      if(![fileManager fileExistsAtPath:writablePath]){ 
       // file doesn't exist 
       NSLog(@"file doesn't exist"); 
       if (imgName) { 
        //save Image From URL 
        [self getImageFromURLAndSaveItToLocalData:imgName fileURL:imgURL inDirectory:documentsDirectoryPath]; 
       } 
      } 
      else{ 
       // file exist 
       NSLog(@"file exist"); 
      } 
} 

-(void) getImageFromURLAndSaveItToLocalData:(NSString *)imageName fileURL:(NSString *)fileURL inDirectory:(NSString *)directoryPath { 
    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; 

    NSError *error = nil; 
    [data writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imageName]] options:NSAtomicWrite error:&error]; 

    if (error) { 
     NSLog(@"Error Writing File : %@",error); 
    }else{ 
     NSLog(@"Image %@ Saved SuccessFully",imageName); 
    } 
} 

Ve bu yöntem kodudur ..

-(void)saveImagesInLocalDirectory 
{ 
     NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
      NSString *imgName = @"image.png"; 
      NSString *imgURL = @"www.example.com/image/image.png"; 
      NSFileManager *fileManager = [NSFileManager defaultManager]; 
      NSString *writablePath = [documentsDirectoryPath stringByAppendingPathComponent:imgName]; 

      if(![fileManager fileExistsAtPath:writablePath]){ 
       // file doesn't exist 
       NSLog(@"file doesn't exist"); 
        //save Image From URL 
        NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString: imgURL]]; 

        NSError *error = nil; 
        [data writeToFile:[documentsDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imgName]] options:NSAtomicWrite error:&error]; 

        if (error) { 
          NSLog(@"Error Writing File : %@",error); 
        }else{ 
          NSLog(@"Image %@ Saved SuccessFully",imgName); 
        } 
      } 
      else{ 
       // file exist 
       NSLog(@"file exist"); 
      } 
} 
+0

Yardımlarınız için çok teşekkürler, ama ben tam bir yeniyim. Özel yöntemler kullanmadan bunu yapmanın bir yolu var mı? Değilse, büyük bir anlaşma değil, nasıl çalıştığını anladım sonra cevabı kabul ediyorum. –

+0

Benim uygulamada soyutlama bcoz için yeni oluşturduğum yöntem çok önemli değil, aynı yöntemi birden çok kez kullanıyorum. İkinci yöntem kodunu, ilk yönteme göre ekleyebilirsiniz. – Dilip

+0

Tamam, bir spin vereyim, bir kez gittiğimde, geri geleceğim ve cevabınızı kabul ediyorum. –

0

Bu benim çözümdür!

+(BOOL)downloadMedia :(NSString*)url_ :(NSString*)name{ 
    NSString *stringURL = url_; 
    NSURL *url = [NSURL URLWithString:stringURL]; 
    NSData *urlData = [NSData dataWithContentsOfURL:url]; 
    if (urlData) 
    { 
     NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 

     NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,name]; 
     [urlData writeToFile:filePath atomically:YES]; 
     return YES; 
    } 
    return NO; 
} 

+(UIImage*)loadMedia :(NSString*)name{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:name]; 
    UIImage *img_ = [UIImage imageWithContentsOfFile:getImagePath]; 
    return img_; 
}