2
WordPressでアニメーション化されたgifイメージのイメージのサイズ変更を無効にする2つのPHP関数を実装しようとしています。ファイルのMIMEタイプがgifの場合は、アップロードを無効にするにはsolutionがありますが、これでは不十分です。 GIFは単なる画像でもあります。 だから私はこのファイルをアニメーションgifであるかどうかをチェックするPHPスクリプトと組み合わせると思いますが、これはsolutionです。これは私のテーマファイルにこの関数をエコーすると言うと動作しますが、functions.phpの中で使用すると機能しないようです。アニメーションgifの場合はイメージのサイズ変更を無効にする
/**
* Detects animated GIF from given file pointer resource or filename.
*
* @param resource|string $file File pointer resource or filename
* @return bool
*/
function is_animated_gif($file)
{
$fp = null;
if (is_string($file)) {
$fp = fopen($file, "rb");
} else {
$fp = $file;
/* Make sure that we are at the beginning of the file */
fseek($fp, 0);
}
if (fread($fp, 3) !== "GIF") {
fclose($fp);
return false;
}
$frames = 0;
while (!feof($fp) && $frames < 2) {
if (fread($fp, 1) === "\x00") {
/* Some of the animated GIFs do not contain graphic control extension (starts with 21 f9) */
if (fread($fp, 1) === "\x21" || fread($fp, 2) === "\x21\xf9") {
$frames++;
}
}
}
fclose($fp);
return $frames > 1;
}
function disable_upload_sizes($sizes, $metadata) {
$uploads = wp_upload_dir();
$upload_path = $uploads['baseurl'];
$relative_path = $metadata['file'];
$file_url = $upload_path . $relative_path;
if(is_animated_gif($file_url)) {
$sizes = array();
}
// Return sizes you want to create from image (None if image is gif.)
return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'disable_upload_sizes', 10, 2);
私はここで間違っていますが、これは機能していません。
'or' gifのための条件と同様にこの行を追加する必要があります:'もし(!のfread($ fpは、3)== "GIF")を{ ' –
うーん...しかし、私はしたいですアニメーション化されたファイルタイプのgifをフィルタリングするには、なぜ条件を追加するのか、それは何ですか? – r1987
私は '(fread($ fp、3)!==" GIF "|| fread($ fp、3)!==" gif "){' –