Загрузить изображение из UIImageView с помощью DropBox SDK для Iphone - PullRequest
0 голосов
/ 20 января 2012

Я новичок в разработке для iOS и только начал работать с DropBox SDK для iphone. В настоящее время я использую версию MacOSX 10.6 с Xcode 3.2.5 на нем (имитатор 4.2).Используя UIImagePickerController, я мог отобразить выбранное изображение в UIImageView.Теперь, если я хочу загрузить это конкретное изображение с помощью DropBox SDK, мне нужно знать его путь в моем приложении, так как применяется следующий код

- (void)uploadFile:(NSString*)filename toPath:(NSString*)path fromPath:(NSString *)sourcePath

, этот метод определен в DBRestClient.h, файл библиотеки из DropBox SDK для iOS.Но, как и в приведенном выше объявлении метода, необходимо определить «fromPath» изображения, присутствующего в UIImageView, чтобы загрузить его в мою учетную запись в Dropbox.Можете ли вы помочь мне в том, как определить путь, или, в этом отношении, любой обходной путь, который может быть применим.

Ответы [ 2 ]

11 голосов
/ 20 января 2012

Сначала вам нужно будет записать файл в файловую систему:

NSData *data = UIImagePNGRepresentation(imageView.image);
NSString *file = [NSTemporaryDirectory() stringByAppendingPathComponent:@"upload.png"];

[data writeToFile:file atomically:YES];
[DBRestClient uploadFile:@"upload.png" toPath:@"Dropbox/Path" fromPath:file];

Обратите внимание, что вы также можете использовать .jpg, что быстрее и более сжато, просто измените UIImagePNGRepresentation на UIImageJPEGRepresentation и передайте значение сжатия (0,8 - 0,9 - хорошо)

0 голосов
/ 20 января 2012

Для чтения файлов из каталога документов (и обмена документами с iTunes) используйте это:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,  YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"FILE_NAME" stringByAppendingString:@".EXTENSION"]];

А также установите в вашем info.plist ключ Application supports iTunes file sharing на ДА

Для чтения файла, встроенного в ваш проект (без совместного использования файлов iTunes) и связанного с папкой из вашей файловой системы, используйте это:

#define EXAMPLES_PATH @"/examplesPics/"

- (NSString *) relativePathForExampleImage: (NSString *) fileName {
    return [[EXAMPLES_PATH stringByAppendingString:self.folderName] stringByAppendingString:fileName];
}

- (NSString *) absolutePathForExampleImage: (NSString *) fileName {
    return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:[self relativePathForExampleImage:fileName]];
}

, а также добавьте папку examplesPics в фазу сборки «Copy Bundle Resources».

Если у вас нет связанной папки, просто сгруппированные в вашем проекте используйте это:

- (NSString *) absolutePathForExampleImage: (NSString *) fileName {
    return [[[NSBundle mainBundle] bundlePath] stringByAppendingString:fileName];
}
...