正在尝试将SQL Blob转换为图像(从IOS DB,通过PHP)
我从我的iPhone上得到了一个包含大量数据的数据库 这些列的名称为:正在尝试将SQL Blob转换为图像(从IOS DB,通过PHP),php,ios,sql,sqlite,blob,Php,Ios,Sql,Sqlite,Blob,我从我的iPhone上得到了一个包含大量数据的数据库 这些列的名称为: 身份证 缩略图 资料 它来自的应用程序主要与图片有关,因此我认为该应用程序正在将图片存储到该表中 仔细观察,缩略图和数据都是斑点 我正在尝试将这些blob转换回图像(但我不知道它们以前是什么内容类型) 我曾尝试使用base64,文件内容,ibase\u blob\u echo以及大多数其他可以在PHP中转换blob的方法 Blob的签名是:BE 9A BC A4 37 25 78 72 7D(¾š¼?7%xr}) 我希望
- 身份证
- 缩略图
- 资料
缩略图
和数据
都是斑点
我正在尝试将这些blob转换回图像(但我不知道它们以前是什么内容类型)
我曾尝试使用base64
,文件内容
,ibase\u blob\u echo
以及大多数其他可以在PHP中转换blob的方法
Blob的签名是:BE 9A BC A4 37 25 78 72 7D(¾š¼?7%xr})
我希望能找到签名,但不幸的是我找不到
我不是一个IOS开发者,所以我不知道如何或者最常见的方式将一个图像转换成一个blob并再次检索它;我只是假设它将与任何其他应用程序相同
如果有人能帮我识别这个Blob的类型,或者能帮我用PHP转换这个Blob,我将不胜感激
(请注意,我不希望将原始Blob数据放在这里)
Jamie您可以创建一个db表来存储和检索BLOB格式的图像。要记住的重要一点是在显示图像时将正确的标题设置为图像类型。下面是您如何做到这一点的,这是基本的,但您可以使代码更广泛和详细 请看 代码太多,无法放在这里。但这是你应该做的,或者说你应该有一个好的起点 如果您不知道可以使用的水滴类型
imagecreatefromstring()
它可以自动检测斑点
或者,如果您不知道BLOB的MIME类型,也可以使用此选项来确定:
function mimetype($data)
{
//File signatures with their associated mime type
$Types = array(
"474946383761"=>"image/gif", //GIF87a type gif
"474946383961"=>"image/gif", //GIF89a type gif
"89504E470D0A1A0A"=>"image/png",
"FFD8FFE0"=>"image/jpeg", //JFIF jpeg
"FFD8FFE1"=>"image/jpeg", //EXIF jpeg
"FFD8FFE8"=>"image/jpeg", //SPIFF jpeg
"25504446"=>"application/pdf",
"377ABCAF271C"=>"application/zip", //7-Zip zip file
"504B0304"=>"application/zip", //PK Zip file ( could also match other file types like docx, jar, etc )
);
$Signature = substr($data,0,60); //get first 60 bytes shouldnt need more then that to determine signature
$Signature = array_shift(unpack("H*",$Signature)); //String representation of the hex values
foreach($Types as $MagicNumber => $Mime)
{
if( stripos($Signature,$MagicNumber) === 0 )
return $Mime;
}
//Return octet-stream (binary content type) if no signature is found
return "application/octet-stream";
}
@参考:
您还可以从此引用中展开类型、MagicNumber:
谢谢您的回复!我尝试使用该教程中介绍的方法来显示blob,但我不知道blob的内容类型。我已经检查了每一个单独的MIME,看看它是否能工作,但每一个都会显示一个损坏的图像。我100%确定这个斑点是一个图像,但我似乎无法让它显示出来。谢谢你的回复。我尝试使用上述函数(以及finfo_file函数)来尝试确定文件类型。不幸的是,每个函数似乎都以“应用程序/八位字节流”作为回复。上面的函数也给了我以下签名:BE9ABCA4372578727D7233384042434537343234CBD53361043A2A22237357F793341E3339414A434636273237343338414344B05C332303434343338-这让我更不知道文件类型到底是什么。数据库大约是800mb满是斑点,我不知道其中包含什么(都在我的手机中),没有一个数据签名与MIME类型匹配?你试过了吗?真的。finfo_缓冲区还为我提供了“应用程序/八位字节流;字符集=二进制”。我只是注意到每个blob上的前563个字母是相同的(以a结尾,);这让我想到,可能有其他东西编码的blob本身。我试图删除重复的部分,但我仍然得到相同的结果时,重复我以前所做的一切。老实说,我已经尝试了我能想到的一切,除非我尝试看看应用程序如何解码图像,但不幸的是,这是不可能的。你还有什么可以帮助我的吗?