Convert between UIImage and Base64 string Convert between UIImage and Base64 string ios ios

Convert between UIImage and Base64 string


Swift

First we need to have image's NSData

//Use image name from bundle to create NSDatalet image : UIImage = UIImage(named:"imageNameHere")!//Now use image to create into NSData formatlet imageData:NSData = UIImagePNGRepresentation(image)!//OR next possibility//Use image's path to create NSDatalet url:NSURL = NSURL(string : "urlHere")!//Now use image to create into NSData formatlet imageData:NSData = NSData.init(contentsOfURL: url)!

Swift 2.0 > Encoding

let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

Swift 2.0 > Decoding

let dataDecoded:NSData = NSData(base64EncodedString: strBase64, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)!

Swift 3.0 > Decoding

let dataDecoded : Data = Data(base64Encoded: strBase64, options: .ignoreUnknownCharacters)!

Encoding :

let strBase64 = imageData.base64EncodedString(options: .lineLength64Characters)print(strBase64)

Decoding :

let dataDecoded:NSData = NSData(base64EncodedString: strBase64, options: NSDataBase64DecodingOptions(rawValue: 0))!let decodedimage:UIImage = UIImage(data: dataDecoded)!print(decodedimage)yourImageView.image = decodedimage

Swift 3.0

let dataDecoded : Data = Data(base64Encoded: strBase64, options: .ignoreUnknownCharacters)!let decodedimage = UIImage(data: dataDecoded)yourImageView.image = decodedimage

Objective-C

iOS7 > version

You can use NSData's base64EncodedStringWithOptions

Encoding :

- (NSString *)encodeToBase64String:(UIImage *)image { return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];}

Decoding :

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {  NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];  return [UIImage imageWithData:data];}

iOS 6.1 and < version

First Option : Use this link to encode and decode image

Add Base64 class in your project.

Encoding :

 NSData* data = UIImageJPEGRepresentation(yourImage, 1.0f); NSString *strEncoded = [Base64 encode:data];

Decoding :

 NSData* data = [Base64 decode:strEncoded ];; image.image = [UIImage imageWithData:data];

Another Option: Use QSUtilities for encoding and decoding



Swift 5

Encoding

func convertImageToBase64String (img: UIImage) -> String {    return img.jpegData(compressionQuality: 1)?.base64EncodedString() ?? ""}

Decoding

func convertBase64StringToImage (imageBase64String:String) -> UIImage {    let imageData = Data.init(base64Encoded: imageBase64String, options: .init(rawValue: 0))    let image = UIImage(data: imageData!)    return image!}

Note: Tested in xcode 10.2

Swift 4

Encoding

func convertImageToBase64String (img: UIImage) -> String {    let imageData:NSData = UIImageJPEGRepresentation(img, 0.50)! as NSData //UIImagePNGRepresentation(img)    let imgString = imageData.base64EncodedString(options: .init(rawValue: 0))    return imgString}

Decoding

func convertBase64StringToImage (imageBase64String:String) -> UIImage {    let imageData = Data.init(base64Encoded: imageBase64String, options: .init(rawValue: 0))    let image = UIImage(data: imageData!)    return image}

Note: Tested in xcode 9.4.1


Swift 4.2 Extension method

extension UIImage {    func toBase64() -> String? {        guard let imageData = self.pngData() else { return nil }        return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)    }}

XCode 9.1 and Swift 4.0

//// Convert UIImage to a base64 representation//class func convertImageToBase64(image: UIImage) -> String {    let imageData = UIImagePNGRepresentation(image)!    return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)}//// Convert a base64 representation to a UIImage//class func convertBase64ToImage(imageString: String) -> UIImage {    let imageData = Data(base64Encoded: imageString, options: Data.Base64DecodingOptions.ignoreUnknownCharacters)!    return UIImage(data: imageData)!}