我有一个桌面应用程序。在该应用程序中,我将图像存储为十六进制,并且运行良好。但是现在我想将桌面应用程序转换为PHP中的Web应用程序。当我将十六进制代码转换为图像时,该图像未完成意味着从底部裁剪图像。
以下是我用来渲染图像的php代码
<?php
$image="visit on given link to get the hexadecimal code";
$bin = pack("H*", $image);
?>
<img src="data:image/jpeg;base64,<?php echo base64_encode($bin);?>" />
十六进制代码在这里 https://drive.google.com/file/d/1UU0tqTlZb-rvQIzT-6yaS8wIKGVlAZK6/view?usp=sharing
下面是我在执行上述代码后得到的图像
完整图片在这里
https://drive.google.com/file/d/1z-byehRMIBJqF-GlMGbGFa8hNUKpXn_w/view?usp=sharing
答案 0 :(得分:0)
腰了两天后,我得到了上述问题的解决方案。 不幸的是,当我从SQL Server导出blob而不查询时,我得到的是不完整的blob。这就是PHP脚本裁剪图像的原因。但是现在我通过查询导出了blob,并获得了完整的blob,然后脚本将blob正确地转换为图像。如果您还从SQL Server导出Blob数据,则应使用给定的查询。谢谢@Bhavesh Tailor和@Magnus Eriksson给您的时间。
DECLARE @sql VARCHAR(8000)
SET @sql = 'BCP "SELECT * FROM [DB].[schema].[table] " QUERYOUT c:\exportdir\exported_table.csv -c -t, -T -S DM-SQL'
EXEC master.dbo.xp_CmdShell @sql
答案 1 :(得分:0)
我也浪费了两天时间寻找解决方案。 最后,在完成以下操作后获得了成功 mssql_query('SET TEXTSIZE 10000000'); //将限制设置为10MB 当然,必须针对我的PHP框架Yii2进行修改。 感谢Wizzard。 Partial data missing from an image file retrieved from MSSQL DB