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

     
  • 相关阅读:
    map用法详解
    求用1,2,5这三个数不同个数组合的和为100的组合个数
    【雅虎笔试题】两个已经排好序的数组,找中位数
    C++ STL算法系列4---unique , unique_copy函数
    C++ STL算法系列3---求和:accumulate
    C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
    C/C++面试小知识点
    C语言内存地址基础
    C语言函数指针基础
    C++ STL算法系列1---count函数
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10145028.html
Copyright © 2011-2022 走看看