一.需求php
最近公司的项目中有个需求,就是用户上传本身的微信二维码,而后系统会自动将用户的微信二维码合并到产品中ios
二.分析微信
由于该系统是手机端的,因此从用户端的体验出发,用户固然是直接在微信上保存二维码而后上传。这里有个问题就是,spa
微信的安卓版本与ios版本保存下来的图片尺寸是不同的。因此为了更加谨慎的使用二维码,这里须要将上传的二维码code
进行转化为统一的规格。因此须要制做略缩图blog
三.过程图片
咱们能够使用php的GD库来处理,定义一个目标尺寸画布,而后将二维码拷贝布满画布,就是代码ip
/** * 制做略缩图方法 * @param string $src 文件路径 * @param int $width 生成略缩图的宽度(只设置高度是则为等比例缩放) * @param int $height 生成略缩图的高度(只设置宽度是则为等比例缩放) * @param string $filename 生成略缩图图片保存路径 */ function makeThumb($src, $width = null, $height = null, $filename) { $srcData = getimagesize($src); list($srcWidth, $srcHeight, $srcType) = $srcData; if (empty($width)) $width = $srcWidth * ($height / $srcHeight); if (empty($height)) $height = $srcHeight * ($width / $srcWidth); switch ($srcType) { case '1': $imgType = 'gif'; break; case '2': $imgType = 'jpeg'; break; case '3': $imgType = 'png'; break; } $imageCreateFun = 'imagecreatefrom'.$imgType; $srcImg = $imageCreateFun($src); $destImg = imagecreatetruecolor(intval($width),intval($height));//建立目标尺寸的画布 imagecopyresampled($destImg, $srcImg,0,0,0,0,$width,$height,$srcWidth,$srcHeight);//将拷贝出二维码并铺满在画布中 $imagefunc = 'image'.$imgType; // header("content-type:image/jpeg;") // imagejpeg($destImg); $imagefunc($destImg,$filename.'.'.$imgType); return $filename.'.'.$imgType; } $codePath = ''; $codeImageType = ''; if ((($_FILES["file"]["type"] == "image/jpeg")||($_FILES["file"]["type"] == "image/jpg")||($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 2097152)) { if($_FILES["file"]["error"] > 0) { echo "发生错误" . $_FILES["file"]["error"] . ",请找TzSteady<br />"; exit; }else { move_uploaded_file($_FILES["file"]["tmp_name"],"./code/" . date("Ymd").$_FILES["file"]["name"]); $codePath = "./code/" . date("Ymd").$_FILES["file"]["name"]; $codePath = makeThumb($codePath,300,false,'./code/'.date("YmdHis")); $codeImageType = $_FILES["file"]["type"]; } }else { echo "<script> alert('请上传小于2M的jpg/png/jpeg格式的二维码'); </script>"; exit; }