我正在使用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