Как сохранить большой двоичный объект в читаемый файл, например .txt или .jpg? - PullRequest
0 голосов
/ 23 октября 2011

возникли большие проблемы при попытке сохранить этот BLOB-объект в файл и загрузить его в виде изображения.

С помощью SQLite Manager (дополнение Firefox) я смог "Сохранить как" файл с помощьюсодержание моего изображения BLOB.В результате получается странный (для меня) код.

Поскольку я не могу опубликовать «источник файла», я прилагаю один png с примером.

example

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

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

$pic = fopen('pics/thumbnails/pic_'.$id.'', 'w');
fwrite($pic, base64_encode($theFile));
fclose($pic);

* РЕДАКТИРОВАТЬ *

$theFile = shell_exec("sqlite3 AddressBookImages.sqlitedb 'select data from ABThumbnailImage where record_id = ".$id."'");
if($theFile != '') {
    file_put_contents('pics/thumbnails/pic_'.$id.'.jpg', $theFile);
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Я нашел решение для этого, но оно очень медленное, я отправляю новый вопрос, чтобы попросить помощи, чтобы улучшить это.

$sql2 = shell_exec("sqlite3 ".$endereco_iphone."".$db_pics." 'select hex(data) from ABThumbnailImage where record_id = ".$id."'");
//
if($sql2 !='' && $sql2 != 'NULL') {
    $img = '';
    foreach(explode("\n",trim(chunk_split($sql2,2))) as $h) {
        $img .= chr(hexdec($h));
    }
    if(file_put_contents('pics/thumbnails/pic_'.$id.'.jpg', $img)) {
        $cnt .= "<img class='pics' src='pics/thumbnails/pic_".$id.".jpg' width='30px' height='30px'></img>";
    }
} else {
    $cnt .= "<div class='pics'></div>";
}
0 голосов
/ 23 октября 2011

Попробуйте использовать (б для двоичного)

$pic = fopen('pics/thumbnails/pic_'.$id.'', 'wb');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...