2016-05-13 14 views
0

Ich habe ein HTML-Formular, die Base64-String eines Bildes an php übermittelt. Das PHP-Skript base64 decodiert die Zeichenfolge, ruft die Image-Ressource unter Verwendung von imagecreatefromstring() ab und speichert dann die Ressource in einer png-Datei. Wenn ich die gespeicherte Datei öffne, sehe ich, dass die Datei nicht mit dem Bild identisch ist, das ich hochgeladen habe. Überall dort, wo Text im Bild ist, erscheint dieser Teil als ein mit Farbe gefülltes Rechteck. Anfügen der hochgeladenen Version des Bildes und des gespeicherten Bildes. Ich habe die neueste Version von PHP installiert (v7) und die neueste Version von PHP-Gd-Bibliothek, die auf Ubuntu 16.04 LTS läuft. Ich kann das Problem nicht lösen. Bitte helfen Sie.PHP Bildbearbeitung korrumpierenden Text innerhalb Bild

Bild Ich versuche

image i am trying to upload

Bild hochladen, die von PHP

image which was saved by php

+0

Sieht aus wie Transparenz (Alpha-Kanal) wird falsch interpretiert ... – jtheman

+0

Wenn Sie das Bild in keiner Weise manipulieren, warum erstellen Sie eine GD Ressource? Verwenden Sie einfach 'base64_decode()' und dann 'file_put_contents()'. Auf diese Weise werden die Daten überhaupt nicht geändert. – timclutton

+0

Ich konvertiere das Bild von einem beliebigen Bildtyp in .png – Rajesh

Antwort

0

ich die Lösung heraus gerettet wurde. Bevor ich imagepng() aufrufen konnte, um die Bildressource in einer Datei zu speichern, musste ich zwei Funktionen aufrufen: imageAlphaBlending() und imageSaveAlpha(), um die Transparenz des Bildes zu erhalten. Mein früherer Code verwendet, um mit PHP 5.5 zu arbeiten, aber das kann in PHP 7 geändert werden.