Impossible de décoder la chaîne base64 en uiimage dans iOS Swift mais fonctionne correctement sous Android

Peter

J'ai ce code pour convertir UIImageà base64EncodedStringet de base64EncodedStringrevenir à la UIImagefois sur l' application iOS et Android.

Le problème est quand je convertir UIImageà base64EncodedStringet l' envoyer à mon appareil Android il fonctionne, aussi quand je reçois base64EncodedStringde l' appareil Android pour IOS cette fonction imageFromBase64décode à UIImagesans problème. Mais quand converti UIImageà base64EncodedStringla fonction IOS et essayer de le décoder dans l' IOS utilisant cette fonction , imageFromBase64il 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 base64EncodedStringen 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?

Larme

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 .ignoreUnknownCharacterslors 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.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive