php创建sprite
需积分: 0 75 浏览量
更新于2020-12-18
收藏 17KB PDF 举报
复制代码 代码如下:<?php$srcdir=’./image/’;$prefix=”pic11_”;$dst=”image”;$imagedir=scandir($srcdir);array_shift($imagedir);array_shift($imagedir);$width=0;$height=0;foreach ($imagedir as $key => $value) { $picinfo=getimagesize($srcdir.$value); $width=$picinfo[0]+$width; if ($height<$picinfo[1]) { $height=$p
在PHP中创建精灵图(Sprite)是一种常见的前端优化技术,用于减少HTTP请求,提高网页加载速度。精灵图是将多个小图像合并成一个大图像,然后通过CSS定位显示需要的部分。以下是一个用PHP实现精灵图的详细过程:
我们需要定义源图像目录 `$srcdir`,图像前缀 `$prefix`,以及输出的精灵图和CSS文件名 `$dst`。在这个例子中,源目录是 './image/',图像前缀是 'pic11_',输出的CSS和PNG文件名都是 'image'。
```php
<?php
$srcdir = './image/';
$prefix = "pic11_";
$dst = "image";
```
接着,使用 `scandir()` 函数获取源目录中的所有文件,并移除两个特殊项 '.' 和 '..'。
```php
$imagedir = scandir($srcdir);
array_shift($imagedir);
array_shift($imagedir);
```
然后,计算所有图像的总宽度 `$width` 和最大高度 `$height`。
```php
$width = 0;
$height = 0;
foreach ($imagedir as $key => $value) {
$picinfo = getimagesize($srcdir . $value);
$width += $picinfo[0];
if ($height < $picinfo[1]) {
$height = $picinfo[1];
}
}
```
创建一个新的真彩色图像资源 `$image`,设置透明背景,并填充透明颜色。
```php
$image = imagecreatetruecolor($width, $height);
imagesavealpha($image, true);
$color = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $color);
```
接下来,遍历每个图像文件,将其复制到精灵图中,并记录CSS样式。
```php
$css = "";
foreach ($imagedir as $key => $value) {
$picinfo = getimagesize($srcdir . $value);
$im = imagecreatefrompng($srcdir . $value);
imagecopymerge($image, $im, $width, 0, 0, 0, $picinfo[0], $picinfo[1], 100);
$picname = pathinfo($srcdir . $value);
$css .= "." . $prefix . $picname['filename'] . "{height:" . $picinfo[0] . "px;width:" . $picinfo[1] . "px;background-position: -" . $width . "px 0px;}" . $css;
$width += $picinfo[0];
imagedestroy($im);
}
```
为了兼容IE系列浏览器,需要额外添加一个通用的CSS规则。
```php
$css = $css . "[class*='" . $prefix . "'] {background-image:url('image.png');}";
```
将CSS写入文件并保存精灵图,然后销毁图像资源。
```php
file_put_contents("./" . $dst . ".css", $css);
imagepng($image, "./" . $dst . ".png");
imagedestroy($image);
```
在HTML中,可以引入生成的CSS文件,并使用类名来显示精灵图的不同部分。
```html
<link rel="stylesheet" type="text/css" href="./image.css">
<body style="background-color:#eee">
<div class="pic11_css3"></div>
<div class="pic11_firefox"></div>
<div class="pic11_chrome"></div>
<span class="css3"></span>
<span class="sprite firefox"></span>
</body>
```
这样,PHP脚本就自动生成了精灵图和相应的CSS文件,用于在网页上展示各个图像。这个过程可以自动化处理大量小图标,极大地提高了网站性能。

weixin_38566180
- 粉丝: 3
最新资源
- PLC与配套低压柜技术规范书.doc
- 2023年VB试题库精简版.docx
- oracle库存操作手册.doc
- DFT和FFT算法比较(可编辑修改word版).docx
- 2023年张孝祥正在整理Java就业面试题大全.doc
- 2023年计算机信息高新技术考试办公软件中级考试大纲介绍.doc
- Mac-OS-X-配置-Cocos2d-x-开发环境(iOS-和-Android).doc
- 传播技术第2章网络信息资源1学时.ppt
- 软件与服务外包主要政策解读讲课资料.ppt
- 互联网背景下协同消费的商业化发展分析.docx
- 第一讲什么是智能家居.ppt
- SQL11用户和权限.ppt
- 促进深度学习的四个维度.pdf
- CEAC国家信息化教育认证项目介绍XXXX.pptx
- 大自然网络营销提案V英纳传播机构.pptx
- 《出生医学证明》套打软件安装使用说明.ppt