Ich versuche, Bilddaten von Microsoft SQL Server-Datenbank aus Spalte mit dem Datentyp image
, zeigen Sie es und speichern in Datei. Aber einige Bilder (10%) sind nicht abgeschlossen. Im Browser werden sie nur halb oder 1/3 von oben gerendert. Jedes Mal, wenn "problematische" Bilder gleich sind und gebrochen sind, ist es auch das Gleiche.Bild von db ist nicht abgeschlossen
Problematische Bilder ich versuchte, Show und Speicher auf 2 verschiedenen Servern
- Problem Server - PHP Version 5.5.19-1 ~ dotdeb.1 (ca. 10% Bilder gebrochen)
- Arbeits Server - PHP Version 5.2.17 (alle Bilder ok)
Wenn ich auf beiden Servern verwenden diese:
var_dump(base64_encode($row['data'], "UTF-8"));
Es scheint, als ob ein Teil des Bildes fehlt - der String ist kürzer.
Ist dies ein Problem bei der Interpretation/Konvertierung von Daten?
Wenn ich auf abgerufenen Daten verwenden iconv_get_encoding
oder mb_detect_encoding
beide zurückkehren false
auf beiden Servern ...
Mein Code:
$conn = mssql_connect ('xxx.xxx.xxx.xxx' , 'xxxxxxxxx', 'xxxxxxxxxxxxxxxxx');
if (!$conn) {
echo "<p style='color: red'>error in connection db! id: ".$id."</p>";
} else {
mssql_select_db('CK', $conn);
echo "<p style='color: green'>connection ok for id: ".$id."</p>";
}
$result = mssql_query(
"SELECT k.data FROM KatG k
WHERE k.auto='".$id."'
ORDER BY k.attr DESC");
$row = mssql_fetch_assoc($result);
$imageData = base64_encode($row['data']);
$src = 'data: image/jpeg;base64,'.$imageData;
$img = '<img style="height: 60px; float: right;" src="'. $src. '">';
echo $img."<p>OK i get data!</p> <hr>";
Wenn ich speichern das Bild wie folgt aus: (ohne base64_encode
Funktion)
Das Bild ist auf die gleiche Weise wie das angezeigte Bild im Browser unterbrochen.