douxian1939 2014-12-22 15:18
浏览 28

Symfony2通过响应发送用imagecreate()创建的图像(httpfoundation)

I want to send simple image through httpgoundation response, from one controller to another. Here's my code:

    $string = (string)md5(uniqid());
    $string = substr($string, 0, $length);

    $image = imagecreate(200, 50);
    imagefill($image, 0, 0, "#000000");

    $headers= array(
        'Content-type'=>'image/jpeg',
        'Pragma'=>'no-cache',
        'Cache-Control'=>'no-cache'
    );

    $response = new Response( $image, 200, $headers );

    return new Response($response);

The error says The Response content must be a string or object implementing __toString(). Seeking the answer using google I only found people who want to return file somewhere from server(an asset). What should I do to get this working?

  • 写回答

1条回答 默认 最新

  • duanlinjian5819 2014-12-22 15:24
    关注

    You have to use return $response; instead of return new Response($response);

    And you have to convert image resource to string. Do the following:

        $string = (string)md5(uniqid());
        $string = substr($string, 0, $length);
    
        $image = imagecreate(200, 50);
        imagefill($image, 0, 0, "#000000");
    
        $headers= array(
            'Content-type'=>'image/jpeg',
            'Pragma'=>'no-cache',
            'Cache-Control'=>'no-cache'
        );
    
        ob_start();
        imagejpeg($img);
        $imageString = ob_get_clean();
    
        return new Response( $imageString, 200, $headers );
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比