zoukankan      html  css  js  c++  java
  • canvas和图片之间的互相装换

    canvas和图片之间的互相装换

    一、总结

    一句话总结:一个是canvas的drawImage方法,一个是canvas的toDataURL方法

    canvas drawImage()
    Image对象 canvas toDataURL()

    1、使用JavaScript将图片拷贝进画布

    canvas drawImage()
    要想将图片放入画布里,我们使用canvas元素的drawImage方法:
    1 // Converts image to canvas; returns new canvas element
    2 function convertImageToCanvas(image) {
    3     var canvas = document.createElement("canvas");
    4     canvas.width = image.width;
    5     canvas.height = image.height;
    6     canvas.getContext("2d").drawImage(image, 0, 0);
    7 
    8     return canvas;
    9 }

    这里的0, 0参数画布上的坐标点,图片将会拷贝到这个地方。

    2、用JavaScript将画布保持成图片格式

    Image对象 canvas toDataURL()

    如果你的画布上的作品已经完成,你可以用下面简单的方法将canvas数据转换成图片格式:

    1 // Converts canvas to an image
    2 function convertCanvasToImage(canvas) {
    3     var image = new Image();
    4     image.src = canvas.toDataURL("image/png");
    5     return image;
    6 }

    这段代码就能神奇的将canvas转变成PNG格式!

    二、ajax上传canvas装换的图片的实例

    php代码(服务器上传图片代码)

        public function gojs_mindmap(){
            $base_img=$_POST['imageData'];
            //dump($base_img);die;
            //$base_img是获取到前端传递的值
            $base_img = str_replace('data:image/png;base64,', '', $base_img);
            //设置文件路径和命名文件名称
            //$path = ROOT_PATH . 'public' . DS . 'static/uploads/student/note/wpaint/';
            $path="./static/uploads/student/note/gojs_mindmap/";
            if(!file_exists($path)){
                mkdir ($path,0777,true);
            }
            $output_file = time().rand(10000,99999).'.png';
            $path = $path.$output_file;
            //  创建将数据流文件写入我们创建的文件内容中
            file_put_contents($path, base64_decode($base_img));
            $outPath="/static/uploads/student/note/gojs_mindmap/".$output_file;
            //dump($outPath);die;
            // 输出文件
            return $outPath;
            //print_r($output_file);
        }

    jquery的ajax上传代码

        function gojs_upload_img(){
            //var gojs_image = new Image();
            var gojs_canvas=$('#myDiagramDiv canvas').get(0);
            //gojs_image.src = gojs_canvas.toDataURL("image/png");
            let imageData=gojs_canvas.toDataURL("image/png");
    
            $.ajax({
                url: '{:url("app/gojs_mindmap")}',
                data: {imageData: imageData},
                type: 'post',
                success: function(resp)
                {
                    console.log(resp);
                    $("input[name='a_content_mindmap_picture']").val(resp);
                    alert('successfully uploaded image!');
                }
            });
    
            //console.log(gojs_canvas);
            //console.log(imageData);
        }

    参考:用JavaScript将Canvas内容转化成图片的方法 – WEB骇客
    http://www.webhek.com/post/convert-canvas-image.html

     
  • 相关阅读:
    MATLAB实现的车牌定位系统
    机器学习公开课备忘录(一)回归问题
    localStorage cookie的增删改查
    cookies,sessionStorage和localStorage的区别(浏览器缓存的区别)
    提升页面性能的方法
    get和post的区别
    ajax jsonp axios fetch
    vue项目创建
    (转)如何使用Log4net创建日志及简单扩展
    C# TSC打印二维码和条形码
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10145028.html
Copyright © 2011-2022 走看看