2017-10-03 7 views
0

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.

Répondre

0

était-TEXTSIZE augmentation nécessaire avant mssql_fetch_assoc et les images sont ok ...

mssql_query('SET TEXTSIZE 10000000'); 

il donc la différence était php.ini vous pouvez définir cette valeur pernament

mssql.textlimit = 10000000 
mssql.textsize = 10000000