J'ai ce code pour convertir UIImage
à base64EncodedString
et de base64EncodedString
revenir à la UIImage
fois sur l' application iOS et Android.
Le problème est quand je convertir UIImage
à base64EncodedString
et l' envoyer à mon appareil Android il fonctionne, aussi quand je reçois base64EncodedString
de l' appareil Android pour IOS cette fonction imageFromBase64
décode à UIImage
sans problème. Mais quand converti UIImage
à base64EncodedString
la fonction IOS et essayer de le décoder dans l' IOS utilisant cette fonction , imageFromBase64
il sera de retour nul.
J'ai ci-dessous le code pour convertir l'image en base64EncodedString
if let image = info[.originalImage] as? UIImage {
let thumb1 = image.resized(withPercentage: 0.3)
if let imageData = thumb1?.jpeg(.medium) {
let strBase64 = imageData.base64EncodedString(options: .lineLength64Characters)
tryEmitMessage(message: strBase64)
}
}
mon exemple Android pour convertir bitmap en base64EncodedString
public static byte[] bitmapToByte(Bitmap bitmap){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
return stream.toByteArray();
}
byte[] bm = BitmapUtils.bitmapToByte(bitmap_image);
String strBase64 = Base64.encodeToString(bm, Base64.NO_WRAP);
Fonction est Bellow ce qui est de l' utilisation decode base64EncodedString
àUIImage
func imageFromBase64 (base64:String) -> UIImage {
let imageData = Data.init(base64Encoded: base64, options: .init(rawValue: 0))
let image = UIImage(data: imageData!)
return image!
}
let message = "base64 string"
dataView.uiimage_image = imageFromBase64(base64: message)
mon exemple android pour convertir base64EncodedString
en bitmap
byte[] b = Base64.decode("base64 string", Base64.DEFAULT);
Bitmap bmp = BitmapFactory.decodeByteArray(b,0,b.length);
S'il vous plaît une idée comment encoder et décoder une image base64 dans iOS Swift?
Tu fais:
let strBase64 = imageData.base64EncodedString(options: .lineLength64Characters)
et
let imageData = Data(base64Encoded: base64, options: .init(rawValue: 0))
Vous avez donc ajouté une option pour l'encodage, mais pas pour le décodage? Le décodage par défaut fonctionne-t-il alors? Inutile de préciser qu'il y avait un jeu d'options spécifique?
Voyons la doc de lineLength64Characters
:
Définissez la longueur de ligne maximale à 64 caractères, après quoi une fin de ligne est insérée .
Passons à la documentation disponible Data.Base64DecodingOptions
, en particulier .ignoreUnknownCharacters
:
Modifiez l'algorithme de décodage afin qu'il ignore les octets inconnus non en Base 64, y compris les caractères de fin de ligne .
Voir?
Utilisez .ignoreUnknownCharacters
lors du décodage au lieu de .init(rawValue:0)
(ce qui pourrait être simplifié avec []
, ou simplement ne pas mettre le paramètre puisque []
c'est sa valeur par défaut).
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots