javascript - 将背景图像更改为由 ajax 调用脚本动态创建的其他图像

标签 javascript php

我正在寻找在使用 GD 函数 ImagePng 时避免图像存储的方法,但使用创建的图像来更改元素上的背景图像属性。

我已经编写了对创建图像的 php 脚本的 ajax 调用,完成后我想将响应用作图像以设置为元素的背景。

我的问题是新创建的图像没有显示,但是使用 Firebug 我可以看到响应是一个字节 block 。

有可能我想达到什么目的吗?或者 我必须存储图像并使用它的引用,强制性的?

这是代码的主要部分:

Ajax 调用:

    jQuery.ajax({
            type: 'POST',
            url: '/renderscooter',
            proccessData: false,
            data: { img: imgSrc, deimg: imgDe, newimg: img}
        })
        .done(function( html ) {
//            jQuery('#content_illu').css('background-image', html);
//            jQuery('#content_illu').css('background-image', 'url('+html+')');
//            jQuery('#content_illu').css('background-image', 'data:image/png;basa64,'+html);
            jQuery('#content_illu').css('background-image', 'data:image/png;'+html);
            jQuery('#content_illu').css('background-size','auto 737px');
        });

PHP Controller :

...
... creation image process 
...
    ob_start();
    //ImagePng($imgPng, $dstImagePathName);
    ImagePng($imgPng);
    ImageDestroy($imgPng);
    $imageData = ob_get_clean();

    $response = $this->getResponse();
    $response
    ->getHeaders()
    ->addHeaderLine('Content-Transfer-Encoding', 'binary')
    //->addHeaderLine('Content-Type', 'image/png')
    ->addHeaderLine('Content-Length', mb_strlen($imageData));
    //$response->setContent('url("'.$dstImageName.'")');
    //$response->setContent(base64_encode($imageData));
    $response->setContent($imageData);
    return $response;

注意: 如果我存储图像并返回字符串:$response->setContent('url("'.$dstImageName.'")');

它在 ajax 调用完成后工作设置:

jQuery('#content_illu').css('background-image', html);

但由于要求,图像可能不会写入磁盘。

最佳答案

有几个解决方案。

  • 将 base64 编码的图像作为字符串返回(确保还使用正确的内容长度
  • 使用 GET 请求而不是 POST 请求,并将背景图像 css 属性设置为 GET 请求 url 而不是使用 AJAX。

关于javascript - 将背景图像更改为由 ajax 调用脚本动态创建的其他图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055685/

相关文章:

php - 防止从 PHP 中不受信任的来源发生注销操作

php - Google Adsense 服务帐户

php - Laravel:存储不将文件放入公共(public)文件夹

javascript - Google +1 按钮脚本未加载到本地 html 文件中

javascript - JS依赖优先级

javascript - AngularJS - 嵌套 ng-repeat 与选择/选项,获取/设置所选值

php - TMP中上传的图片没有文件扩展名?

javascript - Ajax Post 参数名称中带有 [ ]

javascript - 生成指定范围内的随机数——各种情况(int、float、inclusive、exclusive)

php - Laravel Eloquent : n+1 accessing related model via accessor