J'essaie d'obtenir des données d'image à partir de la base de données Microsoft SQL Server à partir de la colonne avec le type de données image
, l'afficher et stocker dans un fichier. Mais certaines images (10%) ne sont pas terminées. Dans le navigateur sont-ils rendus seulement comme la moitié ou 1/3 du haut. Chaque fois que les images «problématiques» sont identiques et que les images sont cassées, c'est la même chose.L'image de db n'est pas terminée
images Problématiques je tentais spectacle et magasin sur 2 serveurs différents
- serveur de travail non - Version PHP 5.5.19-1 ~ dotdeb.1 (images cca 10% de brisures)
- serveur de travail - PHP version 5.2.17 (toutes les images ok)
Si je l'utilise sur les deux serveurs ceci:
var_dump(base64_encode($row['data'], "UTF-8"));
Il semble qu'il manque une partie de l'image - la chaîne est plus courte.
Est-ce un problème d'interprétation/conversion de données?
Si j'utilise des données extraites iconv_get_encoding
ou mb_detect_encoding
à la fois retour false
sur les deux serveurs ...
Mon 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>";
Si je sauve cette image comme ceci: (sans fonction base64_encode
)
$im = imagecreatefromstring($row['data']);
imagejpeg($im, $path);
L'image est divisée de la même manière que l'image affichée dans le navigateur.