0

IDを受け取り、画像を送り返すプロトコルが1つありますが、.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

画像に動的に何かを含める必要がない場合(たとえば、テキストなど)、imagecreate関数を使用する代わりに、デフォルトの1x1画像を返すことができます...?

ただし、403ヘッダーに関しては、サーバーからのエラー応答であるとブラウザが判断した場合に画像が表示されるかどうかはわかりません。そのため、画像が破損する可能性があります。

于 2012-12-14T02:54:07.990 に答える