Файлы изображений, сохраненные в библиотеке документов, не могут быть открыты на компьютере Objective-C - PullRequest
0 голосов
/ 25 октября 2018

Я сохранил файл изображения в библиотеке документов на устройстве iOS с помощью Objective-C, и он работает в изображении пользовательского интерфейса.В этом случае я хочу загрузить файл куда-нибудь (например, Dropbox), он загружается успешно, но я не могу открыть файл, и ошибка компьютера говорит, что «файл изображения (Image.jpg) не может быть открыт. Он может быть поврежден», Снимок экрана с ошибкой

Проблема не в процессе загрузки, поскольку при переходе в папку библиотеки документов я не могу открыть этот файл.Код, который я использовал для сохранения фотографий:

NSString *filePath = [self filesystemPathForURL:localURL];
CDVPluginResult* result = nil;
CDVFileError errCode = INVALID_MODIFICATION_ERR;
int bytesWritten = 0;

if (filePath) {
    NSOutputStream* fileStream = [NSOutputStream outputStreamToFileAtPath:filePath append:shouldAppend];
    if (fileStream) {
        NSUInteger len = [encData length];
        if (len == 0) {
            result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDouble:(double)len];
        } else {
            [fileStream open];

            bytesWritten = (int)[fileStream write:[encData bytes] maxLength:len];

            [fileStream close];
            if (bytesWritten > 0) {
                result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:bytesWritten];
                // } else {
                // can probably get more detailed error info via [fileStream streamError]
                // errCode already set to INVALID_MODIFICATION_ERR;
                // bytesWritten = 0; // may be set to -1 on error
            }
        }
    } // else fileStream not created return INVALID_MODIFICATION_ERR
} else {
    // invalid filePath
    errCode = NOT_FOUND_ERR;
}
if (!result) {
    // was an error
    result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:errCode];
}
return result;

Я также пробую этот код:

    NSString *filePath = [self filesystemPathForURL:localURL];
[encData writeToFile:filePath atomically:YES];

encData - это NSData файла изображения.

1 Ответ

0 голосов
/ 25 октября 2018

Измените это

UIImage *image = [UIImage imageWithData:encData];
NSData *pngData = UIImagePNGRepresentation(image);

на

UIImage *image = [UIImage imageWithData:encData];
NSData *pngData = UIImageJPEGRepresentation(image);

Поскольку ваше расширение - .jpg, но вы пытаетесь написать png-представление изображения, которое у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...