0

我有一个接收 id 并将图片发回的协议。现在我有问题如何发送只创建 .gif ?在这里请看一下我的代码

if($id!="")
    {
        ........

        $ext = substr( $picturename, strrpos($picturename, '.')+1 );
        switch($ext)
        {
            case 'jpg':
                $ext = 'jpeg';
                break;
            case 'jpeg':
                $ext = 'jpeg';
                break;
            case 'png':
                $ext = 'png';
                break;
            case 'gif':
                $ext = 'gif';
                break;
        }

        header('Content-Description: File Transfer');
        header('Content-Type: image/'.$ext);

        $file = "./images/".$picturename;
        readfile($file);
            //this work 

    }
    else
    {
        // Create a 1x1 image
        $im = imagecreatetruecolor(55, 30);
        $trans = imagecolorallocate($im, 0, 0, 0);
        // Make the background transparent
        imagecolortransparent($im, $trans);

        header('HTTP/1.1 403 Forbidden');
        //How can I send .gif back with header ??
    } 
4

3 回答 3

1

您可以设置多个标题并以相同的方式输出图像。附件是生成 1x1 像素的代码。

....
header('HTTP/1.1 403 Forbidden');
header('Content-Type: image/gif');
// output a 1x1 pixel
echo base64_decode("R0lGODdhAQABAIAAAPxqbAAAACwAAAAAAQABAAACAkQBADs=");
于 2012-12-14T02:55:02.307 回答
0

只是输出imagegif($im);。设置403标题并没有做任何特别的事情,因此您可以输出图像,这就是将收到的内容。

于 2012-12-14T02:52:03.677 回答
0

如果您不需要在图像中动态包含任何内容(例如文本),您可以只返回一个默认的 1x1 图像,而不是使用 imagecreate 函数...?

不过,就 403 标头而言,我不确定如果浏览器认为这是来自服务器的错误响应,它是否会显示图像 - 所以你可能会得到损坏的图像。

于 2012-12-14T02:54:07.990 回答