显示图像显示partialy

问题描述:

我有从MS SQL数据库显示麻烦的图像。我知道这不是最好的方式,但我得到的来源。所以基本上我的问题是我无法展示整个图像。我正在排除故障并失败。当我看到在数据库中的BLOB二进制数据是这样的(heidsql):显示图像显示partialy

0x89504E470D0A1A0A0000000D4948445200000258000004B0080600000027A134 ...

但选择数据并没有编码输出它,当我得到这个:

�PNG IHDRX�'�4 sRGB���gAMA���atEXtSoftwareAdobe ImageReadyq�e<���IDATx^�}�Ǒ��V,-�X+i�d1�bfY�f��d�(33C��afft8q�p�\����]R} 
���5����>���sW}U�3�iw���H�"E�)R��@D�)R�H�"E��G�LQ| 
�U�nݺ �w���=zdJR��dz��)~�n�X�%}����| 
�*Ʊ�s1.e�a\Ǹ�q1��G3�0aLg�a�`�2�0�#=�c��\���c�m�| 
�΃�ܟpO¡�� 
��)E�%So�C��'Ĕ���fLd�g����#o��3��{����ʪ�:t�� 
>�ƍG���4|�pZ�n͝;��̞M3fL�ذ���wذa�>h��?�����w�^��s} 
����9��3��]�ՌٌQ�*F�Κ��x�O��x�}��o�yR���=��)����! 
��ݳ�����ɸ��iK�9s&m޲�N9�d:���������s5}�3��O}���/ 
�^~�e��~� }�+_�.�@�?������}��_g�+��/~Q����g>�i��)��? 
H�|�;���=O�<��|�M\�|ڽ{7m߾��-[J�f���ȑ#�4`����~�� 
��ƭ���f���e�[email protected]�Gz�G��� ���0| 
��;O*�R�Q2E��:0ݷ�q��'N��;��ݲ�>����W��U����G�e��eF���� 

当我尝试显示图像时,它只显示图像的1/4。

这是我的代码:

$server = "some-server" 
$link = mssql_connect($server,'user','password') 

if (!$link || !mssql_select_db('database_name', $link)) { 
    die('Unable to connect or select database!'); 
} 

$query = "SELECT * FROM tabel_name WHERE id='1'" 
$version = mssql_query($query,$link); 
$row = mssql_fetch_row($version); 

$data = $row[1]; 
$data64 = base64_encode($data); 
echo "<img height='1200' src='data:image/png;base64, ".$data64 ."'/>" 

我要补充的是正在使用相同的数据和它的工作原理。ASP页面上,并显示图像的整体,而我的解决方案只显示图像的1/4 。内容在数据库中设置为IMAGE

+0

您是否验证了您存储的图像的字节大小,以及从db中检索的内容是否相同? – tan

+0

不可以。数据库不是我的,并且在我之前使用过,因此我无法确认字节大小,但如前所述,相同的数据在已设置的.asp页面中工作,具有相同的图像数据并显示整个图像。 有多少数据可以通过查询传输的限制?它看起来像一些数据丢失,因为图像是1200×600像素大。 – CtrlAltElite

+0

我错过了asp部分。我也希望这不是问题。 src ='data:imaeg – tan

很少检查清单您的问题。

  • 请确保文件完全在db中。 strlen()在PHP端& DATALENGTH()in db。
  • 确保您正确获取结果。 有时它可以是php ini的问题。 https://*.com/a/14419487/8197560

0x89504E4 ...是二进制图像的十六进制表示,看起来正确。

+0

谢谢。所以问题在于php获取的数据量有限。该修复程序使用mssql_query(“SET TEXTSIZE 2147483647”); – CtrlAltElite