mysql - 用php把本地要上传的图片经过剪切,存入数据库
程序员文章站
2022-06-16 17:11:20
...
//获取上传临时文件路径 $uploadedfile = $_FILES['uploadfile']['tmp_name']; //获取源文件资源句柄。接收参数为图片路径,返回句柄 $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数据库呢
回复内容:
//获取上传临时文件路径 $uploadedfile = $_FILES['uploadfile']['tmp_name']; //获取源文件资源句柄。接收参数为图片路径,返回句柄 $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数据库呢
虽然已经有人建议你不要存在数据库里了,不过如果你坚持的话,我还是告诉你实现方法吧,首先你要存图片的字段必须是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);