我正在使用 PHP 将图像处理成缩略图,并且我允许通过 3 种单独的扩展类型:.jpg、.jpeg 和 .png... 前 2 和后者必须通过不同的函数进行处理,即createimagefromjpg() 和 createimagefrompng() 分别。
我正在获取图像的文件扩展名,然后使用 if 语句检查它是哪种文件类型,以便可以正确处理它:
$extension = pathinfo($filename, PATHINFO_EXTENSION);
// Read source image
if ($extension == ('jpg' || 'jpeg')) {
$source_image = imagecreatefromjpeg($filename);
return '1';
} else if ($extension == 'png') {
$source_image = imagecreatefrompng($filename);
return '2';
} else {
return 'error';
}
jpg 和 jpeg 图像被正确处理,因为这个函数返回 1...所以一切看起来都很好。但是,当我通过 png 文件时,它同样会进入第一个分支并返回“1”,即使 png != jpeg 或 jpg。奇怪的。此错误导致我的缩略图根本不生成。
它变得更加混乱。如果我通过替换 IF statemtn 中的 with 来启用严格比较==
,===
则 jpg 和 jpeg 文件会完全出错,表明显然是 'jpg' != 'jpg' (即使它确实如此),同样使用 jpeg。PNG 文件完全破坏了脚本。
编辑:问题似乎不是我的 IF 语句,而是imagecreatefrompng()
函数。它适用于小图像(200x200),但不适用于较大的图像......谁能解释一下?