将存储在 MSSQL blob 中的图像转换为图像文件?
Convert image stored in MSSQL blob to image file?
我将以下数据(jpg
图片)存储在 MSSQL BLOB 中。如何将其转换为可供显示的图像?
0xffd8ffe000104a46494600010101006000600000ffdb004300080606070605080707070909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc000110800b200b203012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a108
我知道如果 BLOB 包含图像的二进制数据,将其直接写入文件应该可以解决问题,但它不起作用。
$blob_data = ''; // the string above
file_put_contents( 'test_image.jpg', $blob_data ); // output is broken image
您问题中的数据似乎不是有效的 jpg 值。如果它已经是存储在数据库中的有效二进制 jpg 图像,则不需要转换。
刚刚有同样的需要将blob转换成图片。
您需要删除开头的 0x
,然后将其转换为 hex2bin()
。
<?php
$source = substr($blob, 2);
$image = hex2bin($source);
file_put_contents('image.jpg', $image);
?>
我将以下数据(jpg
图片)存储在 MSSQL BLOB 中。如何将其转换为可供显示的图像?
0xffd8ffe000104a46494600010101006000600000ffdb004300080606070605080707070909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc000110800b200b203012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a108
我知道如果 BLOB 包含图像的二进制数据,将其直接写入文件应该可以解决问题,但它不起作用。
$blob_data = ''; // the string above
file_put_contents( 'test_image.jpg', $blob_data ); // output is broken image
您问题中的数据似乎不是有效的 jpg 值。如果它已经是存储在数据库中的有效二进制 jpg 图像,则不需要转换。
刚刚有同样的需要将blob转换成图片。
您需要删除开头的 0x
,然后将其转换为 hex2bin()
。
<?php
$source = substr($blob, 2);
$image = hex2bin($source);
file_put_contents('image.jpg', $image);
?>