2017-10-19 1 views
0

Ich bekomme diesen Fehler, wenn ich versuche, ein Bild aus der Datenbank abrufen, alles, was ich tun wollte, ist nur das Signaturbild aus meiner Sicht ausdrucken, kann jemand helfen? Ich habe gehört, dass die Datei beschädigt sein könnte oder etwas oder auch nicht Base64 entschlüsseln könnte, aber ich sehe, dass sie codieren verwenden? (ziemlich verwirrt, was zu tun) Vielen Dank im VorausFehler: imagecreatefromstring(): Daten sind nicht in einem erkannten Format Laravel

Ich speicherte mein Bild in der Datenbank durch Benutzereingaben und legte es in der Datenbank im Binärformat. ($ Table-> binary ('Signatur');)

-Controller

public function getInfo($id) { 

     $data = personal_info::where('id',$id)->get(); 

     $imageDataEncoded = DB::table('personal_infos')->select('signature')->get(); //get image 
    $imageData = base64_decode($imageDataEncoded); 
    $source = imagecreatefromstring($imageData); 
    $imageSave = imagejpeg($source); 
    imagedestroy($source); 
    return view('test',compact('data','imageSave')); 
} 

view.blade.php

@foreach ($data as $object) 
<b>Signature: </b>{{$object->$imageSave}}<br><br> 

Wenn ich diesen ganzen Teil am Regler entfernen und diese nur verwendet in der view.blade.php werde ich keinen fehler bekommen, aber ich weiß, dass es falsch ist, da ich es in ein bild umwandeln soll, das ich gemacht habe. Ich habe von anderen Forum gesehen, dass ich den Pfad des Bildes brauche, aber mein Bild ist in der Datenbank gespeichert, was soll ich tun?

Controller (wenn entfernen)

$imageDataEncoded = DB::table('personal_infos')->select('signature')->get(); //get image 
     $imageData = base64_decode($imageDataEncoded); 
     $source = imagecreatefromstring($imageData); 
     $imageSave = imagejpeg($source); 
     imagedestroy($source); 

view.blade.php

@foreach ($data as $object) 
<b>Signature: </b>{{base64_decode($object->$imageSave)}}<br><br> 

Signaturbild von Benutzer mit diesem Get: page1.blade.php

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Signature Pad</title> 
</head> 
<body> 

{!! Form::open(['url' => 'page1/submit']) !!} 

<canvas id="signature-canvas" style="width:500px;height:200px;max-width:100%;border:1px #CCC solid;"></canvas> 

<div id="signature-message"></div> 

<div id="signature-buttons"> 
    <input type="button" id="clear-signature-btn" value="Clear"> 
    <input type="button" id="save-signature-btn" value="Save"> 
</div> 

<input type="hidden" name="signature" id="signature-data" value=""> 

SignatureController

public function submit(Request $request) 
{ 

    $data = array(); 
    $data['signature'] = $request->signature; 

bekommen diese nun: (warum soll ich das bekommen?) enter image description here

+0

Mögliches Duplikat von [imagecreatefromstring(): Daten sind nicht in einem erkannten Format in] (https: // stackoverflow.com/questions/42228473/imagecreatefromstring-data-is-nicht-in-a-recognized-format-in) –

+0

Es ist irgendwie ähnlich, aber ich hatte versucht, es mit der Antwort zu beheben, die zur Verfügung gestellt wurde. Ich habe meine Fragen aktualisiert. Könnten Sie mir helfen, einen Blick darauf zu werfen? @peterHaberkorn – blastme

+0

zeigen pls den Quellcode des Elements, das im Frontend gerendert wird und was ist das Basisformat, das der Benutzer hochladen –

Antwort

0
  1. die foreach in der Ansicht ist nicht nessesary wenn Sie verwenden:

    $data = personal_info::find($id);

anstelle von

$data = personal_info::where('id',$id)->get(); 

das folgende Beispiel shoulld arbeiten

Sie den Pfad nicht, müssen Sie die base_64 Zeichenfolge verwenden können, wenn er richtig

formated IST
<img width="16" height="16" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYY 
DJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2CmV1unU4zPgISg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW 
7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQPbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReAS 
FZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7"> 

die erste „data:image/gif;base64,“ ist möglicherweise nessesary aber möglicherweise nicht

probiere das:

Signature: <img width="16" height="16" src="{{base64_encode($data->signature)}}"> 

edit: du solltest wirklich th speichern e Dateien auf dem Datenträger und nicht in der Datenbank

+0

Vielen Dank für Ihre Antwort, nur die Frage "R0lGODdHEAAQAMwAAPj7 + FmhUYjNfGuxYY ..." sind sie alle die Base64 der Bilder? Und wo soll ich das hinkriegen oder ist eigentlich die "Signatur: "Entschuldigung für die dumme Frage, ich habe gerade diesen neuen Teil gestartet und bin unsicher von vielen Dingen – blastme

+0

Und noch eine Frage warum ist es base64_encode und nicht decodieren? Ich bin ziemlich verwirrt mit diesem Teil – blastme

+0

Dekodieren macht es zurück zu binär –

Verwandte Themen