Php 如何从.ico文件中获取更大的图像?
我正在尝试使用php从网站下载并保存一个favicon(.ICO)。我想将此ico文件转换为png 如果我理解正确,单个.ICO文件可以存储不同的图像分辨率,如16x16和32x32(就是一个例子)。我的问题是,有没有办法选择要转换的ico文件 目前我可以下载该文件Php 如何从.ico文件中获取更大的图像?,php,favicon,ico,Php,Favicon,Ico,我正在尝试使用php从网站下载并保存一个favicon(.ICO)。我想将此ico文件转换为png 如果我理解正确,单个.ICO文件可以存储不同的图像分辨率,如16x16和32x32(就是一个例子)。我的问题是,有没有办法选择要转换的ico文件 目前我可以下载该文件 $image = file_get_contents('http://google.com/favicon.ico'); $saved_file = fopen("favicon.ico", "w"); fwrite($saved_
$image = file_get_contents('http://google.com/favicon.ico');
$saved_file = fopen("favicon.ico", "w");
fwrite($saved_file, $image);
fclose($saved_file);
此代码下载并保存名为favicon.ico
的文件
然后当我运行这行代码时
var_dump(getimagesize('favicon.ico'));
我得到这个输出
array(6) {
[0]=>
int(16)
[1]=>
int(16)
[2]=>
int(17)
[3]=>
string(22) "width="16" height="16""
["bits"]=>
int(32)
["mime"]=>
string(24) "image/vnd.microsoft.icon"
}
所以我的问题是,如何通过编程访问其他图标大小?我可以在mac上使用预览功能清晰地看到它们,但在php中看不到
有什么想法吗?我如何以编程方式访问其他图标尺寸 你刚才回答了你自己的问题。当您使用
var_dump(getimagesize('favicon.ico'))时代码>
您可以获取图像的信息
如果在某个目录中有这些.ico
文件,请使用phpscandir
函数查看每个图像,该函数使用getimagesize
函数获取图标大小 我多次找到你的答案;)
您可以使用该类:
示例代码:
<?php
include 'class.ico.php';
$ico = new Ico('http://google.com/favicon.ico');
$im = $ico->GetIcon(0); //For get first image
//$im = $ico->GetIcon(1); //For get second image
//$TotalIcons = $ico->TotalIcons(); //for get total numbers of images in icon
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
输出:
对于第一个图像,16x16将在输出中单独显示:
对于第二幅图像,32x32将单独输出:
而且,这个类有一个很好的方法来获取单个图像中的所有图标。见:
<?php
include 'class.icothumb.php';
$ico = new IcoThumb('http://google.com/favicon.ico');
$ico->max_size = 128;
$ico->use_diferent_depths = false;
$ico->GetThumb(4);
?>
输出完美如单个图像:
您可以使用免费的grabicon.com服务检索所需大小的png格式的图标。它为您处理大小调整,并为没有favicon的站点创建唯一的默认图标
此示例使用Wikipedia的32像素PNG favicon:
http://api.grabicon.com/icon?domain=wikipedia.org&size=32
这也比自己检索图标快得多,因为它们是从其他用户的请求中缓存的。从零开始拖动图标通常需要4-6秒来跟踪页面重定向、检查默认位置和元标记等
完全公开,我是创建者,但我认为这是您需要的,而且是免费的。提供了比Nabi答案中的PHPclasses链接更多的最新支持来处理PHP中的.ico文件
以下示例将提取图标中的所有图像:
$icon = $loader->fromFile('/path/to/icon.ico');
foreach ($icon as $idx=>$image) {
$im=$loader->renderImage($image);
$filename=sprintf('img%d-%dx%d.png', $idx, $image->width, $image->height);
imagepng($im, $filename);
printf("rendered %s as %s\n", $icon->getDescription(), $filename);
}
php没有原生的.ico支持。您要么从头开始编写解析器,要么使用外部库/工具来完成。事实上,php无论如何都没有本机映像支持。还有imagick和gd,它们都是外部lib,恰好有php绑定。为什么不使用字体图标为什么不使用最佳答案标志?不,我认为方法是如何访问单个.ico
文件中的不同图像。(我们知道.ico文件是一个多图像文件)Grabicon.com现在收费。