如何在PHP中仅缩小宽度大于1080px的图片,保留小图原尺寸
修复后的完整代码
<?php $files = glob("upload/*.*"); $maxWidth = 1080; foreach ($files as $image) { // 获取图片尺寸,跳过非图片文件 $imageInfo = getimagesize($image); if (!$imageInfo) { continue; } $imageWidth = $imageInfo[0]; echo basename($image) . "<br />"; // 根据宽度决定是否设置width属性 if ($imageWidth > $maxWidth) { echo '<img src="' . $image . '" width="' . $maxWidth . '" alt="Random image" /><br /><br />'; } else { echo '<img src="' . $image . '" alt="Random image" /><br /><br />'; } } ?>
关键修改说明
- 获取图片真实宽度:用
getimagesize()函数提取图片的实际宽度,函数返回数组的第一个元素即为宽度值,这是你之前代码缺失的核心步骤。 - 过滤无效文件:添加判断跳过无法读取尺寸的非图片文件,避免脚本报错。
- 条件渲染标签:仅当图片宽度超过1080px时,才添加
width="1080"属性;宽度≤1080px的图片不设置宽度属性,保持原尺寸显示。 - 优化循环写法:改用
foreach遍历文件列表,比原for循环更简洁高效。
更轻量的替代方案(CSS实现)
如果不需要PHP后端处理,直接用CSS就能实现类似max-width的效果,浏览器会自动处理缩放,无需获取图片尺寸:
img { max-width: 1080px; height: auto; }
内容的提问来源于stack exchange,提问作者Dhirgham Murran
相关产品推荐
相关产品推荐

