我的iPhone上有一个包含大量数据的数据库。
列名为:
它来自的应用程序主要是与图片有关,所以这让我觉得应用程序正在将图片存储到此表中。
仔细观察,Thumbnail
和Data
是Blob。
我正在尝试将这些Blob转换回图像(但我不知道它们之前是什么内容类型)。
我尝试使用base64
,file_put_contents
,ibase_blob_echo
以及您可以在PHP中转换Blob的大多数其他方法。
Blob的签名是:BE 9A BC A4 37 25 78 72 7D (¾š¼¤7%xr})
我希望找到签名Here,但不幸的是我无法找到它。
我不是IOS开发人员,所以我实际上并不知道如何或最常用的方法将图像转换为blob并再次检索它;我只是假设它与任何其他应用程序相同。
如果有人可以帮我识别这个Blob的类型,或者可以帮我转换这个Blob用PHP转换,我会非常感激。
(请注意,我不希望将原始Blob数据放在此处)
杰米
答案 0 :(得分:0)
您可以创建一个db表来存储和检索BLOB格式的图像。要记住的重要一点是在显示图像类型时设置正确的标题。这是你如何做到的,这是基本的,但你可以使代码广泛和精细。
请参阅PHPRO Tutorial。
将太多代码放在这里。但这是你应该这样做或有一个良好的起点。
如果您不知道可以使用的blob的类型
imagecreatefromstring()
http://php.net/manual/en/function.imagecreatefromstring.php
它可以自动检测斑点。
或者您可以使用它来查明您是否不知道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";
}
@ref:Determinate mime type from MySQL column
你也可以从这个引用中扩展Types,MagicNumbers: http://en.wikipedia.org/wiki/List_of_file_signatures