开发者社区> 问答> 正文

怎么把本地的图片经过剪切存入数据库

//获取上传临时文件路径
$uploadedfile = $_FILES'uploadfile';

//获取源文件资源句柄。接收参数为图片路径,返回句柄
$source = ImageCreateFromJPEG($uploadedfile);

//获取文件的长宽
list($width,$height) = GetImageSize($uploadedfile);

if ($width > $height) {

$xoord = ceil(($width-$height)/2);
$width = $height;

} else {

$yoord = ceil(($height-$width)/2);
$height = $width;

}

//创建一个图片。接收参数分别为宽高,返回生成的资源句柄
$thumb = ImageCreatetruecolor(100,100); //大图

//将源文件剪切全部域并缩小放到目标图片上。前两个为资源句柄
ImageCopyResampled($thumb,$source,0,0,$xoord,$yoord,100,100,$width,$height);

//图片显示
ImageJPEG($thumb,'',100);
以上是图片剪切的过程,假定我可以直接通过$db->select|update|insert来操作数据库,请问我要如何完善上面的代码,把要上传的图片经过剪切后转换为2进制存入mysql数据库呢

展开
收起
蛮大人123 2016-02-08 23:55:51 2786 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    虽然已经有人建议你不要存在数据库里了,不过如果你坚持的话,我还是告诉你实现方法吧,首先你要存图片的字段必须是blob格式的,假设你已经做好数据库方面的准备,在代码上你需要做如下改动

    全选复制放进笔记// 从最后一行开始, 用一个临时文件做中转
    $tmp = '/tmp/' . md5(uniqid());
    ImageJPEG($thumb, $tmp, 100);

    // 把数据转换成一个字符串
    $str = mysql_real_escape_string(file_get_contents($tmp));

    // 这只是一个测试的sql,你可以自己修改
    $sql = sprintf("INSERT INTO test (blob_column) VALUES ('%s')", $str);
    mysql_query($sql);

    // 别忘了把临时文件删掉
    unlink($tmp);

    2019-07-17 18:39:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载