php 製做略縮圖

一.需求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;
}
相關文章
相關標籤/搜索