HTML5開發筆記:初窺CANVAS,上傳canvas圖片到服務器


項目做到一個裁切圖片的功能,就是讓用戶上傳頭像的時候可以裁切一下圖片,選擇一個合適大小位置來作為頭像。之中用到了crop.js這個插件,用canvas直接繪制了用戶裁切縮放后的圖片。裁切的過程這邊就不詳細展開了,想要了解詳情的朋友可以深入了解一下crop.js插件,這邊分享一下在生成canvas圖片后,通過ajax來上傳到服務器的一個過程。就以PHP為例:

<script>
var canvas = document.getElementById("canvas_img");
var img = canvas.toDataURL();
var ajax = null;
 
if (window.XMLHttpRequest) {
    ajax = new XMLHttpRequest();
} else {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
ajax.onreadystatechange = function() {
    if (ajax.readyState == 4 && ajax.status == 200) {
    alert(ajax.responseText);
    }
}
ajax.open("POST", "save.php", true);
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajax.send("img=" + img);
</script>
<?php
    define('UPLOAD_DIR', dirname(__FILE__).'/');       //圖片保存路徑 
    $img = $_POST['img'];
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $day = date("Ymd",time());
    $file_name = mt_rand(1000000000000000,9999999999999999);
    if(!is_dir(UPLOAD_DIR . $day)){
        mkdir(UPLOAD_DIR . $day);
    }
    $file = UPLOAD_DIR . $day."/".$file_name. '.png';
    $success = file_put_contents($file, $data);
    return $success;
?>

通過ajax傳輸的方式,讓服務器收到這整個圖片文件的內容,然后寫進文件里,就有了我們所謂的‘上傳圖片’的效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM