Bild zu Base64 string in php?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
$path = '/temp/images/bild.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
DoGame5 
Fragesteller
 09.03.2021, 09:53

Danke, wusste nicht das es sooo einfach ist

0
ohwehohach  09.03.2021, 09:55

Wieso fügst Du vorne 'data:image/' und den ganzen Kram an? Das sieht mir eher aus wie Code, der Bilddaten in einen Shopware-Shop hochlädt 😉 - die brauchen nämlich diese Informationen. Aber für ein reines Base64 der Bilddatei-Daten brauchst Du das nicht

0
Rammstein53  09.03.2021, 10:08
@ohwehohach

Teile, die solche Base64-Strings lesen, wollen meist wissen, um welchen Content es sich handelt. Wenn das nicht benötigt wird, ja klar, dann diese Info einfach weglassen.

0
ohwehohach  09.03.2021, 10:10
@Rammstein53

Ja, kommt schwer auf das API an, welches die Daten dann verarbeiten soll - falls eine solche Verarbeitung überhaupt erforderlich ist.

0
DoGame5 
Fragesteller
 09.03.2021, 14:37
@ohwehohach

Es funktioniert sehr gut wie @Rammstein53 das gemacht hat.

0
ohwehohach  09.03.2021, 14:59
@DoGame5

Ja, was ich nur meinte ist, dass in den Daten eben noch Inhalte drin sind, die über die reinen Base64-Daten hinausgehen. Wenn Du die nicht unbedingt brauchst, lass sie weg. Alles inkl. "base64," ist nicht Teil der eigentlichen Base64-codierten Daten.

1
DoGame5 
Fragesteller
 09.03.2021, 15:34
@ohwehohach

Ja, ist ok, ich verstehe schon was du meinst. Ich habe bei ihm nur das

data:image/

zu einem

data:

gemacht, und jetzt klappt es auch. Vorher hatte ich

data:image/image/png

da stehen und das ist ja falsch

0
DoGame5 
Fragesteller
 09.03.2021, 14:41

Könntest du mir auch Helfen das rückwärts zu machen? Also ich habe den base64 string und will es in einem <img> Tag anzeigen.

Wie geht das?

0
DoGame5 
Fragesteller
 09.03.2021, 15:31
@DoGame5

Alles gut hab's schon selbst herausgefunden

0

Um die reinen Daten der Bilddatei als BASE64 zu erhalten, genügt folgendes:

$content = file_get_contents($path);
$base64 = base64_encode($content);
TheQ86  09.03.2021, 09:59

Zur Sicherheit als 2. Parameter bei file_get_contents noch FILE_BINARY verwenden. Das erzwingt das Lesen im Binärformat.

2