如果所有图片都加载原图的话是很慢的,php提供了两个函数来进行压缩处理,
功能:拷贝原图并调整大小
- imagecopyresized():图片会失真和模糊,一般不使用
- imagecopyresampled():一般使用这个函数,从采样拷贝图像并调整大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php // 拿到图片资源 $srcIm = imagecreatefromjpeg('../image/a.jpg'); // 获取图片宽高 $srcW = imagesx($srcIm); $srcH = imagesy($srcIm); // 计算缩放大小 $percent = 0.5;//缩放比例 $desW = $srcW*$percent; $desH = $srcH*$percent; // 创建新图 $desIm = imagecreatetruecolor($desW, $desH); // 重新采样拷贝图像并调整大小 imagecopyresampled($desIm, $srcIm, 0, 0, 0, 0, $desW, $desH, $srcW, $srcH); // 在浏览器中直接生成 header('Content-Type:image/jpeg'); imagejpeg($desIm,null,75);//在浏览器生成 // imagejpeg($desIm,'../image/a_{$desW}_{$desH}.jpg',75);//输出到文件a_400_120 |
这样就得到了一个大小比原图小一半的图像