Base64-String in eine Bilddatei konvertieren? [duplicate]

Lesezeit: 4 Minuten

Base64 String in eine Bilddatei konvertieren duplicate
Badal

Ich versuche, meine base64-Bildzeichenfolge in eine Bilddatei zu konvertieren. Dies ist mein Base64-String:

http://pastebin.com/ENkTrGNG

Verwenden Sie den folgenden Code, um es in eine Bilddatei zu konvertieren:

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' );

Aber ich bekomme einen Fehler von invalid imagewas ist hier falsch?

1646917447 793 Base64 String in eine Bilddatei konvertieren duplicate
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 🙂

    – Austin Brunkhorst

    3. Juni 2021 um 18:03 Uhr

Base64 String in eine Bilddatei konvertieren duplicate
Henry Trần

Eine einfache Möglichkeit, die ich verwende:

file_put_contents($output_file, file_get_contents($base64_string));

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

Base64 String in eine Bilddatei konvertieren duplicate
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.

    – Asfandyar Khan

    10. Mai 2019 um 7:11 Uhr

1646917449 206 Base64 String in eine Bilddatei konvertieren duplicate
Schimon Doodkin

vielleicht so

function save_base64_image($base64_image_string, $output_file_without_extension, $path_with_end_slash="" ) {
    //usage:  if( substr( $img_src, 0, 5 ) === "data:" ) {  $filename=save_base64_image($base64_image_string, $output_file_without_extentnion, getcwd() . "/application/assets/pins/$user_id/"); }      
    //
    //data is like:    data:image/png;base64,asdfasdfasdf
    $splited = explode(',', substr( $base64_image_string , 5 ) , 2);
    $mime=$splited[0];
    $data=$splited[1];

    $mime_split_without_base64=explode(';', $mime,2);
    $mime_split=explode("https://stackoverflow.com/", $mime_split_without_base64[0],2);
    if(count($mime_split)==2)
    {
        $extension=$mime_split[1];
        if($extension=='jpeg')$extension='jpg';
        //if($extension=='javascript')$extension='js';
        //if($extension=='text')$extension='txt';
        $output_file_with_extension=$output_file_without_extension.'.'.$extension;
    }
    file_put_contents( $path_with_end_slash . $output_file_with_extension, base64_decode($data) );
    return $output_file_with_extension;
}

Das ist ein alter Thread, aber falls Sie das Bild mit derselben Erweiterung hochladen möchten,

    $image = $request->image;
    $imageInfo = explode(";base64,", $image);
    $imgExt = str_replace('data:image/', '', $imageInfo[0]);      
    $image = str_replace(' ', '+', $imageInfo[1]);
    $imageName = "post-".time().".".$imgExt;
    Storage::disk('public_feeds')->put($imageName, base64_decode($image));

Sie können ‚public_feeds‘ in Laravels Dateisystem.php erstellen.

   'public_feeds' => [
        'driver' => 'local',
        'root'   => public_path() . '/uploads/feeds',
    ],

  • 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

    – Mohammed Raza

    17. November 2021 um 17:08 Uhr


1645651389 696 Kann ich die Ubergangsanimation von Android startActivity andern
Julfikar

if($_SERVER['REQUEST_METHOD']=='POST'){
$image_no="5";//or Anything You Need
$image = $_POST['image'];
$path = "uploads/".$image_no.".png";

$status = file_put_contents($path,base64_decode($image));
if($status){
 echo "Successfully Uploaded";
}else{
 echo "Upload failed";
}
}

  • 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

    – Mohammed Raza

    17. November 2021 um 17:08 Uhr


1646917450 541 Base64 String in eine Bilddatei konvertieren duplicate
Fazil Raza

Dieser Code hat bei mir funktioniert.

<?php
$decoded = base64_decode($base64);
$file="invoice.pdf";
file_put_contents($file, $decoded);

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>

988020cookie-checkBase64-String in eine Bilddatei konvertieren? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy