1

Web からアクセスできないフォルダーにアニメーション GIF 画像があります。その画像をPHP GDで出力したいのですが、出力するとGIFがアニメーション化されません。

何か助けはありますか?

4

2 に答える 2

1

PHP-GD で画像をもう一度処理する代わりに (既に存在するファイルを読み取るだけでなく、はるかに多くのリソースをそのように割り当てることになります。

  1. ファイルが存在し、読み取り可能かどうかを確認します
  2. 意図した出力に適切なヘッダーを設定します
  3. ファイルデータをクライアントに返す

    if (!is_readable($FILE)){
        exit('Undefined file');
    }
    
    header('Content-type: image/gif');
    echo file_get_contents($FILE);
    
于 2012-11-24T17:03:56.987 に答える
0

そのような画像 (またはあらゆる種類のファイル) にアクセスするには、「ルーティング スクリプト」を使用します。

クライアント -> ルーティング スクリプト -> ファイルを開いてコンテンツを転送 -> クライアント

クライアントは次のような URL を要求します。http://your.domain/some/path/image.php?id=animation

次のようなものを使用して、ファイルの内容をクライアントに出力します。

<?php
    // some catalog (or database) where file-paths are kept
    $catalog = array(
        'animation' => '/path/to/animated_gif.gif';
    );

    // read which file the client wants to access
    $id = $_GET['animation'];

    // decide action on where that file is located physically
    if (!isset($catalog['id'])
    {
        // die with error message
        die('forbidden');
    }

    // send file content
    $success = readfile($catalog['id']);
    if (FALSE === $success)
    {
        // die with error message
        die('sorry, problems to give the file.');
    }

これが機能するためには、http サーバー経由で gif ファイルに直接アクセスできないことに注意してください。ローカル ファイル システム内のファイルにアクセスするのは、ローカル スクリプトです。したがって、スクリプトはクライアント要求のルーターとして機能します。

スクリプト内では、あらゆる種類の派手なことを行うことができます。

  • カウント リクエスト
  • 未承諾のリクエストをブロックする
  • 転送するものを変更する
  • ... 限りない可能性 ...
于 2012-11-24T16:50:12.743 に答える