画布图像的图像效果不通过 php 上传保存,但适用于下载同一画布文件

2024-04-22

这是显示该问题的 YouTube 视频:https://www.youtube.com/watch?v=znzLQSYlsKM https://www.youtube.com/watch?v=znzLQSYlsKM.

我给出了视频描述中涉及的所有代码的链接。

我正在使用 js 库对图像应用影响。然后,我触发一个事件,为用户提供下载链接,并使用图像的 base64 动态创建一个表单元素。然后我将其传递给 php 文件并将其保存到文件夹中。您可以下载的图像应用了效果,但保存的图像则没有应用效果。问题是它们都是同一个文件。

JS Code:

function showDownload(canvas){
    //this is how i send it to my main page and use ajax script to upload to the php file.

    var url = canvas.toDataURL("image/png;base64;");
    $('<input/>').attr({
         type: 'hidden', id: 'fileroast', name: 'fileroast', value: url
    }).appendTo('#output');

    // this is how i link the download file
    downloadImage.off('click').click(function(){
        var url = canvas.toDataURL("image/png;base64;");
        downloadImage.attr('href', url);
    }).fadeIn();

}

过滤器代码:

filters.click(function(e){
    e.preventDefault();
    var f = $(this);
    if(f.is('.active')){
        // Apply filters only once
        return false;
    }
    filters.removeClass('active');
    f.addClass('active');
    // Clone the canvas
    var clone = originalCanvas.clone();
    // Clone the image stored in the canvas as well
    clone[0].getContext('2d').drawImage(originalCanvas[0],0,0);
    // Add the clone to the page and trigger
    // the Caman library on it
    photo.find('canvas').remove().end().append(clone);
    var effect = $.trim(f[0].id);
    Caman(clone[0], function () {
        // If such an effect exists, use it:
        if( effect in this){
            this[effect]();
            this.render();
            showDownload(clone[0]);
        }
        else{
            hideDownload();
        }
    });
});
// Use the mousewheel plugin to scroll
// scroll the div more intuitively
filterContainer.find('ul').on('mousewheel',function(e, delta){
    this.scrollLeft -= (delta * 50);
    e.preventDefault();
});

这就是答案。

    function submitForm() {

      var fd = '';



      if(get_user != logged_username){



        }else{

        var d = new Date();

        var time = d.getTime();

        var fd = new FormData(document.getElementById("fileinfo"));



        $.ajax({

          url: "upload_photo.php",

          type: "POST",

          data: fd,

          enctype: 'multipart/form-data',

          processData: false,  // tell jQuery not to process the data

          contentType: false   // tell jQuery not to set contentType



        }).done(function( data ) {



            if (data.indexOf("Invalid") >= 0) { 

                alert('invalid file type, must be jpeg, jpg, or png.');

            }else{

              console.log(data);

              var post = {"pic_location":data, "time":time, "username": logged_username};

              var json_data = post;

              Cynergi.insert('http://thewaywardjourney.com:3000/profile_pictures', json_data);

              $( "#fileroast" ).remove();

            //this is where we save the photos location to the db for retrieveal.

            }

        });

        return false;

    }

   }

脚本.js

var apply = $('#apply');



function showDownload(canvas){

    apply.off('click').click(function(){

        var url = canvas.toDataURL("image/png;base64;");

        $('<input/>').attr({type: 'hidden', id: 'fileroast', name: 'fileroast', value: url}).appendTo('#output');

        console.log(url);   

        console.log('apply');

    }).fadeIn();

}



function hideDownload(){

    downloadImage.fadeOut();

}

模态 HTML

<div id="uploadPic" class="modal fade" >

  <form method="post" id="fileinfo" name="fileinfo" onsubmit="return submitForm();">

    <div class="modal-dialog">

        <div class="modal-content">

            <div class="modal-header" style="background:#f3f3f3;">

                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>

                <h4 class="modal-title" style="color:black;">Choose picture to upload as profile pic.</h4>



            </div>

            <div class="modal-body">



              <div id="photo">





              </div>



              <div id="filterContainer" style='width:400px;'>

                <ul id="filters" style='width:400px;'>

                  <li> <a href="#" id="normal">Normal</a> </li>

                  <li> <a href="#" id="vintage">Vintage</a> </li>

                  <li> <a href="#" id="lomo">Lomo</a> </li>

                  <li> <a href="#" id="clarity">Clarity</a> </li>

                  <li> <a href="#" id="sinCity">Sin City</a> </li>

                  <li> <a href="#" id="sunrise">Sunrise</a> </li> 

                  <li> <a href="#" id="crossProcess">Cross Process</a> </li>

                  <li> <a href="#" id="orangePeel">Orange Peel</a> </li>

                  <li> <a href="#" id="love">Love</a> </li>

                  <li> <a href="#" id="grungy">Grungy</a> </li>

                  <li> <a href="#" id="jarques">Jarques</a> </li>

                  <li> <a href="#" id="pinhole">Pinhole</a> </li>

                  <li> <a href="#" id="oldBoot">Old Boot</a> </li>

                  <li> <a href="#" id="glowingSun">Glowing Sun</a> </li>

                  <li> <a href="#" id="hazyDays">Hazy Days</a> </li>

                  <li> <a href="#" id="herMajesty">Her Majesty</a> </li>

                  <li> <a href="#" id="nostalgia">Nostalgia</a> </li>

                  <li> <a href="#" id="hemingway">Hemingway</a> </li>

                  <li> <a href="#" id="concentrate">Concentrate</a> </li>

                </ul>

              </div>

              <div id='output_file'></div>

              <div id="output"></div>



            </div>

            <div class="modal-footer">

              <button id='apply' class="btn btn-info">Upload</button>

                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>



            </div>

        </div>

    </div>

  </form>

</div>    

php

<?php

    // requires php5

    define('UPLOAD_DIR', 'images/profile_images/');

    $img = $_POST['fileroast'];

    $img = str_replace('data:image/png;base64,', '', $img);

    $img = str_replace(' ', '+', $img);

    $data = base64_decode($img);

    $files = UPLOAD_DIR . uniqid() . '.png';

    $success = file_put_contents($files, $data);

    print $files;

    //print $file ? 'default':'images/profile_images/default.png';

?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

画布图像的图像效果不通过 php 上传保存,但适用于下载同一画布文件 的相关文章

  • jQuery:处理 getJSON() 中的错误?

    使用 jQuery 时如何处理 500 错误getJSON http api jquery com jQuery getJSON 有几个关于错误处理的问题getJSON and https stackoverflow com questio
  • 使用 Jquery 清除 5 个空 TD

    我有一个正在填充的动态表 我知道我不应该这样做 但是你会如何连续找到 5 个空 TD 并隐藏它们呢 因此 如果行包含 5 个空 TD 则不显示 TD 我想删除每个实例 td td td td td td td td td td 在 DOM
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • PHPUnit - 模拟 S3Client 无法正常工作

    库 aws aws sdk php 2 PHP 版本 PHP 5 4 24 cli 作曲家 json require php gt 5 3 1 aws aws sdk php 2 require dev phpunit phpunit 4
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 当高阶参数保留时,如何删除模型中的低阶参数?

    问题 只要高阶参数 即交互作用 保留在模型中 我就无法删除模型中的低阶参数 例如主效应参数 即使这样做 模型也会被重构 并且新模型不会嵌套在更高的模型中 请参阅以下示例 因为我来自我使用的方差分析 contr sum d lt data f
  • .NET 有成功的 profibus 通信吗?

    有没有人聊成功了profibus http www profibus com 来自 NET 应用程序 如果您这样做了 您使用什么设备 卡来完成此操作 应用程序是什么 以及您是否使用任何类型的预先存在或可用的代码 我们没有使用过Profibu
  • 如何通过 Python 将 csv 数据帧上传到 azure?

    我正在使用 Python 和 Pyspark 并且想要将 CSV 文件上传到 azure blob 存储 我已经有一个由代码生成的数据框 df 我想做的是接下来的事情 Dataframe generated by code df Creat
  • C++ 特征值/向量分解,只需要快速的前n个向量

    我有一个 3000x3000 协方差相似矩阵 在其上计算特征值 特征向量分解 它是一个 OpenCV 矩阵 我使用cv eigen 完成工作 然而 我实际上只需要前 30 个特征值 向量 我不关心其余的 从理论上讲 这应该可以显着加快计算速
  • 托盘栏中打开多个图标

    我正在开发一个 Windows 应用程序 当我运行该应用程序时 托盘栏上会出现多个图标 当我将鼠标悬停在这些图标上时 它们就会消失 有人知道为什么会发生这种情况吗 protected override void OnClosed Event
  • 在 ASP.NET 身份框架中更改时刷新当前用户的角色?

    使用 VS 2013 标准 MVC 模板和身份提供程序框架 用户已登录 我有 UserManager AddToRole User Identity GetUserId Members Line X RedirectToAction Ind
  • 无法通过 Godaddy 服务器在 ASP.NET 中发送电子邮件

    我有一个托管在 Godaddy 上的 ASP NET 应用程序 我想从中发送电子邮件 当它运行时 我得到 不允许使用邮箱名称 服务器响应是 抱歉 您所在位置的中继被拒绝 代码和Web config的重要部分如下 msg new MailMe
  • 防止 RichTextBox 自动滚动

    我有一个使用 RichTextBox 控件实现的只读数据记录窗口 我希望能够禁用用户单击控件时发生的自动滚动 以便用户可以选择特定日志进行复制 粘贴操作或其他操作 然而 一旦用户单击 RichTextBox 它就会自动滚动到底部 这使得这变
  • 在上下文中绘图时如何翻转坐标?

    我从 UIImage 创建一个上下文 然后使用 CGContextDrawImage bitmapContext CGRectMake 0 0 originalImage size width originalImage size heig
  • 适用于 BlackBerry 的 QR 码阅读器

    是否有 BlackBerry 库 组件 开源或商业 可集成到我自己的应用程序中充当 QR 码阅读器 我想将它完全集成到我的应用程序中 或者 有没有办法使用开源中兴图书馆 http code google com p zxing 与相机结合使
  • UIViewController 的 viewDidAppear 在模式关闭后不会被调用

    UIViewController 视图 A 通过将另一个视图控制器 视图 B 作为模态控件调用来调用它 自我呈现模态视图控制器 视图是动画的 TRUE 视图 B 通过调用而存在 自我解雇ModalViewControllerAnimated
  • 禁用 youtube api 的全屏

    我有一个带有片段的应用程序 在这些片段内我有框架布局 我在其中添加了 YouTubePlayerSupportFragment 但是当我单击全屏时 会引发此异常 java lang RuntimeException 无法启动活动 Compo
  • 使用 Spring 映射嵌套 json 和 POJO

    我正在实现一个 REST API 它使用 json 发送和接收数据 我对这个 API 设计完全陌生 我正在使用 Spring 框架和 requestbody responsebody 进行映射 最初 我有一个这样的 pojo public
  • 通过 ID 从 Firebase 检索 Java 对象

    我正在编写一个 Android 应用程序 我正在尝试检索该类的对象User java按 Firebase 相关表中的 ID 我想知道如何从Java端获取它 只要我尝试了中所述的示例Firebase 官方文档 https www fireba
  • 时间戳转字符串日期

    我不知道如何将时间戳转换为日期 我有 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R lay
  • 实体框架、外键和EntityKey

    我的实体框架和外键有问题 我有一个表 BC Message Assets 其中有 3 个 FK MessageId AssetId 和 StatusId 我像这样创建我的 MessageAsset MessageAsset messageA
  • 如何快速将6字节无符号整数复制到内存区域?

    我需要将 6 字节整数值复制到内存区域中 从其开头开始并尽可能快地复制 如果硬件支持这样的操作 我想使用它 我现在使用的是 x64 处理器 编译器是 GCC 4 6 3 The memset不适合这项工作 因为它只能复制字节 这std fi
  • 无法在 Ubuntu 16.04.2 LTS 上启动 docker(初始化 graphdriver 时出错)

    使用systemctl启动docker时遇到以下错误 Job for docker service failed because the control process exited with error code See systemct
  • 查找给定纬度/经度的位置(邮政编码、城市、州)的最快方法

    我需要一个免费 开源 的解决方案 给定纬度 经度可以返回最近的城市 州或邮政编码 mysql 不是一个选择 如果可能的话 小型轻量级数据库将是最好的 更新 没有网络服务 每天有 5000 万次展示 即使是最小的插件也会造成伤害 因此添加服务
  • 画布图像的图像效果不通过 php 上传保存,但适用于下载同一画布文件

    这是显示该问题的 YouTube 视频 https www youtube com watch v znzLQSYlsKM https www youtube com watch v znzLQSYlsKM 我给出了视频描述中涉及的所有代码