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)!}