Распаковывает закодированные Base64 байты изображения в Swift - PullRequest
0 голосов
/ 26 октября 2018

Я разрабатываю приложение для iOS в Swift для использования клиентами компании, в которой я работаю. В дополнение к iOS-приложению я также создаю бэкэнд-API с ASP.Net Core. Метод, который я выбрал для отправки изображений, представляет собой сжатое base64-кодированное строковое представление изображения в массиве JSON. Это позволяет сэкономить на пропускной способности и упростить отправку нескольких изображений.

На стороне API я использую .NET Class System.IO.Compression.DeflateStream для сжатия байтов изображения в памяти перед их кодированием в строку base64 и отправкой их в приложение iOS.

Что касается iOS, меня немного смущает вопрос, каким будет процесс декодирования строки и распаковки данных для создания UIImage объекта для отображения в UIImageView.

Это все работает без сжатия, но я хотел попробовать это, чтобы сэкономить на пропускной способности. Однако вполне возможно, что это не оптимальное решение, и я готов измениться. Ниже приведен фрагмент кода, который я использую для преобразования строки base64 в объект Data, а затем для создания объекта UIImage из этого.

static func imageComplete(data json: JSON) -> [UIImage] {
    var images: [UIImage] = []

    for imageString in json.arrayValue {
        if let compressedImageData = Data(base64Encoded: imageString.stringValue),
            let image = UIImage(data: compressedImageData) {

            images.append(image)
        }
    }
    return images
}

TL; DR В Swift я хочу распаковать байты изображения, закодированные в виде строки Base64, возвращенной из ASP.Net Core WebAPI.

...