2017-10-06 2 views
0

확장자가 base64 문자열로 바뀌고 base64 문자열을 GIF로 변환하고 ImageView에 표시하려고합니다. iOSDevCenters + GIF.swift 파일을 사용하고 있습니다. 나는 문자열을 NSData를 얻고 있지만, 데이터를 이미지로 변환 할 때, 그 제공 nil.Below 내 코드입니다 :신속하게 base64 문자열에서 GIF를 만드는 방법

let imageData = profileImageString.data(using: .utf8) 
self.thumbnailMedia.image = UIImage.gifImageWithData(imageData!) 

누군가가이 작업을 수행하는 방법에 대한 아이디어가 있습니까는?

+0

당신이 JSON API를 내부 문자열을 받고, 아니면 그냥 GIF 데이터를지고있다? –

답변

0

base64 문자열에서 시작하는 경우 UTF8이 아닌 base64 문자열로 디코딩해야합니다.

if let data = Data(base64Encoded: imageDataString) { 
    let image = UIImage(data: data) 
} 

니펫 단순히 인코딩 화상 문자열을 사용하는 Data 객체로 디코딩하고 데이터로부터 이미지를 생성한다.
base64 문자열을 사용하여 많은 작업을하는 경우 String 구조 기능을 확장하는 것이 좋습니다.

extension String { 
    //: ### Base64 encoding a string 
    func base64Encoded() -> String? { 
     if let data = self.data(using: .utf8) { 
      return data.base64EncodedString() 
     } 
     return nil 
    } 

    //: ### Base64 decoding a string 
    func base64Decoded() -> String? { 
     if let data = Data(base64Encoded: self) { 
      return String(data: data, encoding: .utf8) 
     } 
     return nil 
    } 
} 

이 조각은 링거에 Github, 학점에서 찍은.

또 다른 방법은 사용입니다 스위프트 규칙을 준수한다 레오 버스들이시길에 의해 생성 된 extension :

extension String { 
    var data:   Data { return Data(utf8) } 
    var base64Encoded: Data { return data.base64EncodedData() } 
    var base64Decoded: Data? { return Data(base64Encoded: self) } 
} 

extension Data { 
    var string: String? { return String(data: self, encoding: .utf8) } 
} 
+0

문자열을 utf8 데이터로 변환 할 때 데이터를 언 래핑 할 필요가 없습니다. 그것은 결코 실패하지 않을 것입니다. –

+1

'Data (.utf8) .base64EncodedString()'을 사용하고 리턴 유형 –

+0

에서 옵션을 제거 할 수 있습니다. 또한 메소드에 매개 변수가 없으므로 계산 된 특성으로이 https : //를 확인해야합니다. stackoverflow.com/questions/29365145/how-to-encode-string-to-base64-in-swift/43817935#43817935 –

관련 문제