你好,我遇到php读取sql server中image类型的图片数据的问题,现在想把数据库中的图片信息保存成文件
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
展开全部
// 定义上传目录
$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/upload/';
// 创建目录
if(!is_dir($upload_dir))mkdir($upload_dir);
// 二进制数据 $picture
$image_type = image_type_to_mime_type($picture));
// 取得图片类型
$temp = explode('/', $image_type);
// 文件名
$uuid = rand(0,100).strtotime('+1 day');
$name = $uuid.$temp[1];
$path = $upload_dir.$name;
// 打开文件准备写入
$file = fopen($path, 'w');
// 写入
fwrite($file, $picture);
//关闭
fclose($file);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sqlserver image类型存入的实际上是16进制数据 因此需要读取三原色 拼成图片
$face_data = "0xD174B8007795CC........";//数据库存储数据
$size = 0;
$im = imagecreatetruecolor(48, 48);
for ($y = 0; $y < 48; $y++) {
for ($x = 0; $x < 48; $x++) {
$hex = substr($face_data, ($size++)*4, 3);
$red = substr($hex,2,1);
$green = substr($hex,1,1);
$blue = substr($hex,0,1);
$color = imagecolorallocate($im, ord($red), ord($green), ord($blue));
imagesetpixel($im, $x, $y, $color);
}
}
header('Content-type: image/jpeg');
$big_img = imagecreatetruecolor(96, 96);
imagecopyresampled($big_img, $im,0, 0, 0, 0, 96,96, 48, 48);
imagejpeg($big_img);
imagedestroy($big_img);
imagedestroy($im);
$face_data = "0xD174B8007795CC........";//数据库存储数据
$size = 0;
$im = imagecreatetruecolor(48, 48);
for ($y = 0; $y < 48; $y++) {
for ($x = 0; $x < 48; $x++) {
$hex = substr($face_data, ($size++)*4, 3);
$red = substr($hex,2,1);
$green = substr($hex,1,1);
$blue = substr($hex,0,1);
$color = imagecolorallocate($im, ord($red), ord($green), ord($blue));
imagesetpixel($im, $x, $y, $color);
}
}
header('Content-type: image/jpeg');
$big_img = imagecreatetruecolor(96, 96);
imagecopyresampled($big_img, $im,0, 0, 0, 0, 96,96, 48, 48);
imagejpeg($big_img);
imagedestroy($big_img);
imagedestroy($im);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-10-13
展开全部
你把图片路径存起来不就好了吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询