php - 通过 Ajax 发送到 PHP 的 Fabric.js canvas.toDataURL()

标签 php javascript canvas fabricjs

当我需要创建具有透明背景的图像时,我遇到了一个问题。我仍然不知道问题出在 fabricjs 还是 php。当我发送带有彩色背景的图像时,一切正常。当我发送具有透明背景的图像时出现问题。 生成的图像是用黑色背景创建的。 那么,让我更好地解释一下: 当用户单击保存按钮时,我将 Canvas 的字符串表示形式发送到服务器端的 php,以生成 Canvas 的图像。因此,我使用以下函数通过 Ajax(jQuery 的 POST 函数)发送 Canvas 的字符串表示形式:


    function sendStringRepresentation(){
        var strDataURI = canvas.toDataURL();
        strDataURI = strDataURI.substr(22, strDataURI.length);

        $.post("action/createImage.php",
        { 
            str: strDataURI
        },
        function(data){
            if(data == "OK"){
                $("#msg").html("Image created.");
        }
        else{
            $("#msg").html("Image not created.");
            }
        });
    }

在 PHP 文件中,我使用以下代码生成图像:


    // createImage.php

    $data = base64_decode($_POST["str"]);

    $urlUploadImages = "../uploads/img/";
    $nameImage = "test.png";

    $img = imagecreatefromstring($data);

    if($img) {
        imagepng($img, $urlUploadImages.$nameImage, 0);
        imagedestroy($img);

        // [database code]

        echo "OK";
    }
    else {
        echo 'ERROR';
    }

同样,问题出在背景透明 Canvas 上。使用彩色背景一切正常。

最佳答案

最后一步恰恰相反:

imagecopyresampled( $img, $alpha_image, 0, 0, 0, 0, $w, $h, $w, $h );

瞧!图片是透明的!

关于php - 通过 Ajax 发送到 PHP 的 Fabric.js canvas.toDataURL(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771986/

相关文章:

css - 当位置是绝对时,按钮被 Canvas 覆盖

php - 如何将 2013 年的每个日期放入 CSV/Excel 工作表中?

PHP 在一个共享主机上输出语法错误,但在另一个共享主机上运行完美

javascript - 如何在单个 http 响应中发送多个先前压缩的文件以供脚本使用?

javascript - @ 在 JavaScript 中做什么?

使用Html5的JQuery Shuffle效果【Canvas +CSS +JS】

php - PDO:无法传递变量进行准备

php - 无法输出没有断行的大字符串 block (nginx+php)

javascript - 有没有办法检查用户是否使用express.Router中间件登录?

javascript - 在 p5.js Canvas 上旋转和绘图