PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    Warning: imagecreatefrompng(): '201511091.png' is not a valid PNG file

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:在给客户做项目的时候,遇到一个奇葩的问题,就是客户在上传图片裁剪的时候,出现Warning: imagecreatefrompng(): '201511091.png&#3...
    在给客户做项目的时候,遇到一个奇葩的问题,就是客户在上传图片裁剪的时候,出现Warning: imagecreatefrompng(): '201511091.png' is not a valid PNG file 

    这个错误的意思是警告:imagecreatefrompng():201511091.png’不是有效的PNG文件,出现这个问题是图片虽然是png后缀,但事实它不是png图片,我用getimagesize获取图像信息

    不了解getimagesize函数的可以查看一下这篇文章

    http://www.bcty365.com/content-10-3028-1.html

    获取的数据如下:

    Array ( [0] => 1136 [1] => 757 [2] => 2 [3] => width="1136" height="757" [bits] => 8 [channels] => 3 [mime] => image/jpeg )

    明显可以看出这个图片的类型是jpeg的,而我在程序里判断的代码如下:

    1. $ext = explode(".",$picname); 
    2. $ext=end($ext); //判断图片类型 www.bcty365.com
    3. switch($ext){ 
    4.     case "png"
    5.          
    6.         $image=imagecreatefrompng($picname); 
    7.         break
    8.     case "jpeg"
    9.          
    10.         $image=imagecreatefromjpeg($picname); 
    11.         break
    12.     case "jpg"
    13.          
    14.         $image=imagecreatefromjpeg($picname); 
    15.         break
    16.     case "gif"
    17.          
    18.         $image=imagecreatefromgif($picname); 
    19.         break


    使用$ext = explode(".",$picname);$ext=end($ext);判断图片类型明显有弊端

    那该如何优化呢?代码如下
     

    1. $ename=getimagesize($picname); 
    2.   $ename=explode('/',$ename['mime']); 
    3.   $ext=$ename[1]; 
    4.   switch($ext){ 
    5.    case "png"
    6.     
    7.     $image=imagecreatefrompng($picname); 
    8.     break
    9.    case "jpeg"
    10.     
    11.     $image=imagecreatefromjpeg($picname); 
    12.     break
    13.    case "jpg"
    14.     
    15.     $image=imagecreatefromjpeg($picname); 
    16.     break
    17.    case "gif"
    18.     
    19.     $image=imagecreatefromgif($picname); 
    20.     break
    21.   } 


    这样获取准确的图片类型,然后在执行裁剪,这样裁剪就没有问题了,奇葩问题。。。。

    ok ,解决 

     

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-3027-1.html
    相关热词搜索: