尝试将SQL Blob转换为图像(来自IOS DB,通过PHP)

时间:2014-12-10 18:43:22

标签: php ios sql sqlite blob

我的iPhone上有一个包含大量数据的数据库。

列名为:

  • ID
  • 缩略图
  • 数据

它来自的应用程序主要是与图片有关,所以这让我觉得应用程序正在将图片存储到此表中。

仔细观察,ThumbnailData是Blob。

我正在尝试将这些Blob转换回图像(但我不知道它们之前是什么内容类型)。

我尝试使用base64file_put_contentsibase_blob_echo以及您可以在PHP中转换Blob的大多数其他方法。

Blob的签名是:BE 9A BC A4 37 25 78 72 7D (¾š¼¤7%xr})

我希望找到签名Here,但不幸的是我无法找到它。

我不是IOS开发人员,所以我实际上并不知道如何或最常用的方法将图像转换为blob并再次检索它;我只是假设它与任何其他应用程序相同。

如果有人可以帮我识别这个Blob的类型,或者可以帮我转换这个Blob用PHP转换,我会非常感激。

(请注意,我不希望将原始Blob数据放在此处)

杰米

1 个答案:

答案 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