Web からアクセスできないフォルダーにアニメーション GIF 画像があります。その画像をPHP GDで出力したいのですが、出力するとGIFがアニメーション化されません。
何か助けはありますか?
PHP-GD で画像をもう一度処理する代わりに (既に存在するファイルを読み取るだけでなく、はるかに多くのリソースをそのように割り当てることになります。
ファイルデータをクライアントに返す
if (!is_readable($FILE)){
exit('Undefined file');
}
header('Content-type: image/gif');
echo file_get_contents($FILE);
そのような画像 (またはあらゆる種類のファイル) にアクセスするには、「ルーティング スクリプト」を使用します。
クライアント -> ルーティング スクリプト -> ファイルを開いてコンテンツを転送 -> クライアント
クライアントは次のような 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 ファイルに直接アクセスできないことに注意してください。ローカル ファイル システム内のファイルにアクセスするのは、ローカル スクリプトです。したがって、スクリプトはクライアント要求のルーターとして機能します。
スクリプト内では、あらゆる種類の派手なことを行うことができます。