我正在使用PHP将图像处理为缩略图,并且允许使用3种不同的扩展名:.jpg,.jpeg,& .png ...前两个和后一个必须通过不同的函数处理,分别是createimagefromjpg()和createimagefrompng()。PHP if语句认为png扩展名是jpg/jpeg(检查pathinfo())?
我获取图像的文件扩展名,然后使用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中替换==
与===
进行严格比较,jpeg文件错误地完全显示出'jpg'!='jpg'(即使它的确如此),并且与jpeg同样如此。 PNG文件完全破坏了脚本。
编辑:这个问题似乎不是我的IF语句,但imagecreatefrompng()
功能。它适用于小图像(200x200),但不适用于较大的图像...任何人都可以解释这一点吗?
有趣......似乎部分工作。JPG和JPEG文件现在可以像往常一样识别,但PNG文件仍然完全破坏脚本... – ReactingToAngularVues 2013-02-25 02:23:32
是否实际上被称为PNG扩展名的elseif?确保它不是一个不同的错误 – 2013-02-25 02:24:21
我怎么能告诉? – ReactingToAngularVues 2013-02-25 02:30:12