2011-09-04 3 views
1

У меня очень простой PHP-скрипт, который создает файл «favicon.ico» jpg/gif/png загруженный файл.PHP GD - создание favicon.ico для InternetExplorer

Вот часть функции:

$file = 'cache/'.$e .'/'. basename($_FILES['uploadfile']['name']); 

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 

$im = imagecreatefromjpeg($file); 
    list($width, $height) = getimagesize($file); 
    $image_p = imagecreatetruecolor("16", "16"); 
    imagecopyresampled($image_p, $im, 0, 0, 0, 0, "16", "16", $width, $height); 
    $num = rand (1,99999); 
    $output = $num."-favicon.ico"; 
    imagepng($image_p,'dl/'.$output); 
    imagedestroy ($im); 
    unlink ($file); 
    echo 'success'; 

} 

И скрипт работает отлично! В Chrome, Opera и Firefox сгенерированный favicon отображается хорошо, как и должно быть.

Но в Interent Explorer 8 - это просто не отображается.

Благодарим за помощь!

ответ

2

Вы не можете просто сохранить его как PNG с расширением ico ... Я предполагаю, что Chrome/Opera/Firefox не могут прочитать файл, поэтому они решили открыть файл и узнать, что фактический формат зависит не от расширения файла, а от IE.

Однако вам нужно будет найти другое решение, чтобы сохранить его как ICO, поскольку GD не может этого сделать самостоятельно, вы можете либо попробовать ImageMagick, либо после того, как быстрый Google phpThumb, похоже, сможет это сделать (не пробовал).

+0

Спасибо! Но есть ли решение без ImageMagick? Просто GD? – enloz

+1

Как я уже сказал, ImageMagick или phpThumb. Я просто посмотрел на источник, на первый взгляд кажется, что он сохраняет файлы ico, получая данные от GD. –

+2

Чтобы быть ясным, IE не заботится о расширении файла. IE требует, чтобы значок был значком. IE вызывает ExtractIcon() в файле (http://msdn.microsoft.com/en-us/library/ms648068.aspx), и если это не удается, оно прекращается. –

 Смежные вопросы

  • Нет связанных вопросов^_^