当前位置:Gxlcms > PHP教程 > 为啥上传图片中含有透明通道,图片就会变成黑色

为啥上传图片中含有透明通道,图片就会变成黑色

时间:2021-07-01 10:21:17 帮助过:72人阅读

为什么上传图片中含有透明通道,图片就会变成黑色?
p.s. 改的图片上传类原文地址:http://blog.csdn.net/a957651480/article/details/23124257

  1. <!--?php<br /--><br>class Images{<br><br>
  2. var $inputName; //控件名<br>
  3. var $allowType = array(<br>
  4. 'image/gif','image/jpg','image/jpeg','image/png','image/x-png','image/pjpeg'<br>
  5. );
  6. //上传类型<br>
  7. var $allowSize = 1048576;
  8. //限制大小<br>
  9. var $saveDir = ""; //保存目录<br>
  10. var $FileName = ""; //文件名<br>
  11. var $isRename = false; //是否重命名,默认为true<br>
  12. var $errID = 0; //错误代码,默认为0<br>
  13. var $errMsg = ""; //错误信息<br>
  14. var $savePath = ""; //保存路径<br>
  15. var $ImgSize = 0; //图片尺寸<br><br>
  16. function __construct($inputName,$allowType="",$allowSize="",$saveDir="",$isRename=true){<br>
  17. if(empty($inputName)){<br>
  18. $this->chk_err(-1); //无传入控件名<br>
  19. }else{<br>
  20. $this->inputName = $inputName;<br>
  21. }<br><br>
  22. if(!empty($allowType)) $this->allowType = $allowType;<br>
  23. if(!empty($allowSize)) $this->allowSize = $allowSize;<br>
  24. if(!empty($saveDir)) $this->saveDir = $saveDir;<br>
  25. if(!empty($isRename)) $this->isRename = $isRename;<br>
  26. }<br><br>
  27. function is_uploaded(){<br>
  28. if(empty($_FILES[$this->inputName]['name'])){<br>
  29. $this->chk_err(4); //没有文件被上传<br>
  30. }else{<br>
  31. if(is_uploaded_file($_FILES[$this->inputName]['tmp_name'])){<br>
  32. return true;<br>
  33. }else{<br>
  34. $this->chk_err(-2); //文件上传不合法<br>
  35. }<br>
  36. }<br>
  37. }<br><br>
  38. function chk_type(){<br>
  39. if(!in_array($_FILES[$this->inputName]['type'],$this->allowType)){<br>
  40. $this->chk_err(-3); //上传的文件类型不被允许<br>
  41. }else{<br>
  42. return true;<br>
  43. }<br>
  44. }<br><br>
  45. function chk_size(){<br>
  46. if($_FILES[$this->inputName]['size'] > $this->allowSize){<br>
  47. $this->chk_err(-4); //上传的文件过大<br>
  48. }else{<br>
  49. return true;<br>
  50. }<br>
  51. }<br><br>
  52. function move_uploaded(){ //移动上传文件<br>
  53. if(!$this->is_uploaded()){<br>
  54. return false;<br>
  55. }<br><br>
  56. if(!$this->chk_size()){<br>
  57. return false;<br>
  58. }<br><br>
  59. if(!$this->chk_type()){<br>
  60. return false;<br>
  61. }<br><br>
  62. //重命名<br>
  63. if($this->isRename){<br>
  64. $arrTmp = pathinfo($_FILES[$this->inputName]['name']);<br>
  65. $extension = strtolower($arrTmp['extension']);<br>
  66. $file_newname = $this->FileName; //重命名新文件<br>
  67. }else{<br>
  68. $file_newname = $_FILES[$this->inputName]['name'];<br>
  69. }<br>
  70. <br>
  71. if(!file_exists($this->saveDir)){ //判断保存目录是否存在<br>
  72. mkdir($this->saveDir,0777,true); //建立保存目录<br>
  73. }<br><br>
  74. //移动文件<br>
  75. $result = move_uploaded_file($_FILES[$this->inputName]['tmp_name'],$this->saveDir."/".$file_newname);<br><br>
  76. if($result){<br>
  77. $path = $this->savePath = $this->saveDir."/".$file_newname;
  78. //文件的成功保存路径<br>
  79. return $path;<br>
  80. }else{<br>
  81. $this->chk_err($_FILES[$this->inputName]['error']);<br>
  82. }<br>
  83. <br>
  84. }<br><br>
  85. //判断出错信息<br>
  86. function chk_err($errID){<br>
  87. $this->errID = $errID;<br><br>
  88. switch($this->errID){<br>
  89. case -4:<br>
  90. $this->errMsg = '只能上传1M以内的图片 | [返回]';<br>
  91. break;<br>
  92. case -3:<br>
  93. $this->errMsg = '这不是一张图片 | [返回]';<br>
  94. break;<br>
  95. case -2:<br>
  96. $this->errMsg = '文件上传不合法 | [返回]';<br>
  97. break;<br>
  98. case -1:<br>
  99. $this->errMsg = '无控件名传入 | [返回]';<br>
  100. break;<br>
  101. case 1:<br>
  102. $this->errMsg = '上传的文件超出了php.ini中upload_max_filesize设定的最大值 | [返回]';<br>
  103. break;<br>
  104. case 2:<br>
  105. $this->errMsg = '上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值 | [返回]';<br>
  106. break;<br>
  107. case 3:<br>
  108. $this->errMsg = '文件只有部分被上传 | [返回]';<br>
  109. break;<br>
  110. case 4:<br>
  111. $this->errMsg = '请选择一张图片 | [返回]';<br>
  112. break;<br>
  113. default:<br>
  114. break;<br>
  115. }<br>
  116. return false;<br>
  117. <br>
  118. }<br><br>
  119. function get_errMsg(){

人气教程排行