php中根据已有图片创建图像时,函数imagecreatefromjpeg()和imagecreatefromgif()都能正常工作,而imagecreatefrompng()显示不出图片。
用getimagesize获取图像信息,获取的数据如下:
Array ( [0] => 1136 [1] => 757 [2] => 2 [3] => width="1136" height="757" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
明显可以看出这个图片的类型是jpeg的,而我在程序里判断的代码如下:
$ext = explode(".",$picname);
$ext=end($ext); //判断图片类型 www.bcty365.com
switch($ext){
case "png":
$image=imagecreatefrompng($picname);
break;
case "jpeg":
$image=imagecreatefromjpeg($picname);
break;
case "jpg":
$image=imagecreatefromjpeg($picname);
break;
case "gif":
$image=imagecreatefromgif($picname);
break;
}
使用$ext = explode(".",$picname);$ext=end($ext)根据图片后缀名判断图片类型明显有弊端
那该如何优化呢?代码如下
$ename=getimagesize($picname);
$ename=explode('/',$ename['mime']);
$ext=$ename[1];
switch($ext){
case "png":
$image=imagecreatefrompng($picname);
break;
case "jpeg":
$image=imagecreatefromjpeg($picname);
break;
case "jpg":
$image=imagecreatefromjpeg($picname);
break;
case "gif":
$image=imagecreatefromgif($picname);
break;
}
这样获取准确的图片类型,然后进行处理。