Maison >développement back-end >tutoriel php >Comment corriger les erreurs « Image invalide » lors de la conversion de chaînes Base64 en JPEG ?

Comment corriger les erreurs « Image invalide » lors de la conversion de chaînes Base64 en JPEG ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-14 06:14:11236parcourir

How to Fix

Convertir une chaîne Base64 en un fichier image

La conversion d'une chaîne codée en Base64 en un fichier image peut être simple, mais des erreurs peuvent survenir si pas géré correctement. L'une de ces erreurs est une image invalide.

Problème :

Lors de la tentative de conversion d'une chaîne Base64 en fichier image à l'aide du code suivant :

function base64_to_jpeg($base64_string, $output_file) {
    $ifp = fopen( $output_file, "wb" );
    fwrite( $ifp, base64_decode( $base64_string) );
    fclose( $ifp );
    return( $output_file );
}

$image = base64_to_jpeg( $my_base64_string, 'tmp.jpg' );

vous pouvez rencontrer une erreur indiquant "invalide image."

Solution :

L'erreur provient de l'inclusion de data:image/png;base64 dans le contenu encodé. Ces données supplémentaires interfèrent avec le processus de décodage base64 et aboutissent à un fichier image invalide. Pour résoudre ce problème, supprimez les données redondantes avant de décoder la chaîne :

function base64_to_jpeg($base64_string, $output_file) {
    // open the output file for writing
    $ifp = fopen($output_file, 'wb');

    // split the string on commas
    // $data[0] == "data:image/png;base64"
    // $data[1] == <actual base64 string>
    $data = explode(',', $base64_string);

    // we could add validation here with ensuring count( $data ) > 1
    fwrite($ifp, base64_decode($data[1]));

    // clean up the file resource
    fclose($ifp);

    return $output_file;
}

En supprimant les données inutiles et en vous assurant que seule la chaîne réelle codée en Base64 est décodée, vous réussirez à convertir la chaîne en une chaîne valide. fichier image.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn