Попытка конвертировать SQL Blob в изображение (из БД IOS, через PHP)

У меня есть база данных с моего iPhone, которая содержит огромное количество данных.

Столбцы названы:

  • Я БЫ
  • Thumbnail
  • Данные

Приложение, из которого оно создано, в основном связано с изображениями, поэтому я думаю, что приложение хранит изображения в этой таблице.

При ближайшем рассмотрении Thumbnail а также Data являются BLOB-объектами

Я пытаюсь преобразовать эти BLOB-объекты обратно в изображение (но я не знаю, какой у них был тип контента).

Я пытался использовать base64, file_put_contents, ibase_blob_echo и большинство других способов конвертировать BLOB-объекты в PHP.

Подпись Blob: BE 9A BC A4 37 25 78 72 7D (¾š¼¤7%xr})

Я надеялся найти подпись Вот но, к сожалению, я не смог его найти.

Я не являюсь разработчиком IOS, поэтому на самом деле я не знаю, как или самым распространенным способом преобразования изображения в большой двоичный объект и его повторного получения; Я просто предположил, что это будет так же, как любое другое приложение.

Если кто-то может помочь мне определить тип этого BLOB-объекта или конвертировать конвертирование этого BLOB-объекта в PHP, я был бы очень признателен.

(Обратите внимание, что я не хочу размещать здесь необработанные данные Blob)

Джейми

0

Решение

Вы можете создать таблицу БД для хранения и получения изображений в формате BLOB. Важно помнить, чтобы при отображении отображался правильный заголовок для типа изображения. Вот как вы это делаете, это просто, но вы можете сделать код обширным и сложным.

Посмотри пожалуйста PHPRO Учебник.

слишком много кода, чтобы поставить его здесь. Но именно так вы должны это делать или иметь хорошую отправную точку.

если вы не знаете тип блоба, который вы можете использовать

imagecreatefromstring()
http://php.net/manual/en/function.imagecreatefromstring.php

это может автоматически обнаружить каплю.

или вы можете использовать это, чтобы узнать, не знаете ли вы тип MIME BLOB:

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: Определить тип MIME из столбца MySQL

Вы также можете расширить Types, MagicNumbers из этой ссылки:
http://en.wikipedia.org/wiki/List_of_file_signatures

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector