Фавикон в PNG в PHP - PullRequest
       196

Фавикон в PNG в PHP

7 голосов
/ 03 января 2011

Мне нужен PHP-скрипт для преобразования значков в PNG с сохранением их исходных размеров.

Я знаю, что у Google есть секретный конвертер значков - http://www.google.com/s2/favicons?domain=http://facebook.com/, но это преобразует значки в 16x16, даже если онибыли изначально больше.Так что в основном мне это нужно, за исключением эффекта сжатия.

Я тоже видел это - http://www.controlstyle.com/articles/programming/text/php-favicon/, но я не мог заставить его работать после нескольких часов возни с ним.

В основном я пытаюсь автоматически получить значок для ссылки, которая будет как можно большего размера - автоматически 48x48 png на основе URL-адреса будет идеальным сценарием, но я не знаю ни одного по-человечески возможного способа сделать этоучитывая, что ни один веб-сайт не хранит значок 48x48 в общедоступном месте.

Кто-нибудь знает сценарий / услугу или есть предложения?Спасибо!

Ответы [ 6 ]

4 голосов
/ 19 января 2011

Итак, я использовал класс под названием FloIcon, который может конвертировать BMP в ICO. Я должен отметить, что всегда важно проверять тип файла иконки и не предполагать, что .ico означает bmp, потому что некоторые сайты (например, Facebook) на самом деле были PNG).

@goker.cebeci Ваш сервис выглядит потрясающе! Главное, чтобы мои значки были максимально возможного размера, поэтому я просто написал собственный сценарий.

3 голосов
/ 03 января 2011

Вот функция для преобразования из bmp (ico) в png http://us3.php.net/manual/en/function.imagecreate.php#53879

  1. . Загрузите ico на свой сервер (file_get_contents или другими методами), обычно это favicon.ico по базовому URL,или очистите html-код для элемента <link rel="shortcut icon" href="ico_url_here" type="image/x-icon" /> и извлеките href
  2. , используйте функцию из приведенной выше ссылки для преобразования в png
  3. , используйте функции GD для открытия и изменения размера

$ image = imagecreatefrompng ($ filename);
$ resized_image = imagecreatetruecolor ($ NewWidth, $ NewHeight);
imagecopyresampled ($ resized_image, $ image, 0, 0, 0, 0,0, $ NewWidth, $ NewHeight, $ OriginalWidth, $ OriginalHeight);

4 Сохраните файл (imagepng или аналогичный)

2 голосов
/ 18 января 2011

Я использовал Imagemagick в моем favicon в PNG проекте веб-службы конвертера.

convert "favicon.ico" -thumbnail 16x16 -alpha on -background none -flatten "favicon.png"

Фавиконы некоторых веб-сайтов имеют сцену, и их размеры превышают 16x16 пикселей. например: http://blogger.com/favicon.ico

http://www.google.com/s2/favicons?domain=http://facebook.com/ не работает должным образом. Итак, я разработал веб-сервис для этого.

Если вы хотите попробовать мой веб-сервис, вы можете пойти по этому пути http://geticon.org/of/http://facebook.com/ или так http://geticon.org/of/facebook.com

1 голос
/ 21 февраля 2013

Код в http://www.controlstyle.com/articles/programming/text/php-favicon/ имеет небольшую ошибку:

Вам нужно изменить $entry['swBitCount'] на $entry['wBitCount']. Когда я сделал это изменение все работает правильно

0 голосов
/ 21 марта 2011

Я использую здесь: http://plugins.trac.wordpress.org/browser/wp-favicons/trunk/plugins/filters/convert_to_png.php здесь: http://www.tom -reitz.com / 2009/02/09 / ico-images-in-facebook-profile-boxes /

(я не хотел сначала сохранять ICO на диск)

Единственная проблема с библиотекой заключается в том, что она иногда дает сбой в XOR, например на этом фавиконе: http://www.slatch.com/

Так что это то, что мне нужно исправить, но, кроме того, оно отлично работает для тысяч иконок.

0 голосов
/ 03 января 2011

imagecopyresized - документы также содержат пример

Вышеуказанное требование скомпилировано с опцией --with-gd

Я полагаю, вы не знали о расширение imagick , а также

и т. д .: все возможные расширения / функции обработки изображений

...