Aber ich bekomme einen Fehler von invalid imagewas ist hier falsch?
Austin Brunkhorst
Das Problem ist, dass data:image/png;base64, ist in den codierten Inhalten enthalten. Dies führt zu ungültigen Bilddaten, wenn die base64-Funktion sie dekodiert. Entfernen Sie diese Daten in der Funktion, bevor Sie die Zeichenfolge wie folgt decodieren.
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;
}
Ich habe eine sehr intelligente Lösung $filename_path = md5(time().uniqid()).”.jpg”; $decoded=base64_decode($base64_string_img); file_put_contents(“uploads/”.$filename_path,$dekodiert);
– Rizwan Gill
6. Februar 2015 um 12:09 Uhr
Ich hatte nur rohe base64-Daten ohne Präfix oder so. dafür musste ich $data ändern[1] zu $daten[0].
– rcpfuchs
27. April 2016 um 6:05 Uhr
@rcpfuchs Wenn Sie nur rohes base64 haben, was ist dann die Notwendigkeit, $data zu verwenden, verwenden Sie es direkt, wie in der gestellten Frage geschrieben
– Eine Ameise
2. Februar 2017 um 16:35 Uhr
Bruder, du rettest mein Leben!
– Jacky Chong
12. September 2019 um 2:55 Uhr
@DanieleTesta Sie müssen einige Benchmarks bereitstellen, um viiiel effizienter zu quantifizieren 🙂
Das funktioniert gut, weil file_get_contents kann Daten aus einer URI lesen, einschließlich einer data://-URI.
genial – danke für die antwort. Denken Sie nur daran, dass Sie am Anfang tatsächlich data:image/png;base64 BENÖTIGEN, sonst schlägt file_get_contents() fehl.
– iateadonut
30. März 2019 um 9:00 Uhr
Diese Lösung ist besser als die akzeptierte Antwort.
– Barun
14. Juni 2020 um 14:46 Uhr
Ja, bessere und einfachere Lösung. Sie können die Dateierweiterung (falls erforderlich) mithilfe der Kennungszeichenfolge erstellen data:image/png;base64.
– Fahmi Auliya
13. Oktober 2020 um 9:22 Uhr
aaaaa123456789
Sie müssen den Teil entfernen, der sagt data:image/png;base64, am Anfang der Bilddaten. Das Tatsächliche base64 Daten kommen danach.
Entfernen Sie einfach alles bis einschließlich base64, (vor dem Anruf base64_decode() auf den Daten) und alles wird gut.
Habe verschiedene Lösungen ausprobiert, aber diese hat überall funktioniert.
laravel's filesystem.php UND Storage::disk('public_feeds')->put() hat mir geholfen, mein Problem zu lösen, das mir hilft, Dateien in dem gewünschten Ordner zu löschen
laravel's filesystem.php UND Storage::disk('public_feeds')->put() hat mir geholfen, mein Problem zu lösen, das mir hilft, Dateien in dem gewünschten Ordner zu löschen