尝试将此Blob保存到文件并将其作为图像加载时遇到很大麻烦。
使用SQLite Manager(Firefox附加组件)我能够“另存为”包含我的图像BLOB内容的文件。结果是一个奇怪的(对我来说)代码。
由于我不能发布“文件来源”,我附上了一个png示例。
在我的Mac中,保存的文件没有延伸,但我可以将其生成的图像视为缩略图。
所以我试图在保存一个文件的同时获得相同的结果,但我得到的是一个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);
}
答案 0 :(得分:0)
尝试使用(b代表二进制)
$pic = fopen('pics/thumbnails/pic_'.$id.'', 'wb');
答案 1 :(得分:0)
我找到了解决方法,但速度很慢,我发布了一个新问题,请求帮助以改善这一点。
$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>";
}