欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-03-29 16:41:47
...
为什么上传图片中含有透明通道,图片就会变成黑色?
p.s. 改的图片上传类原文地址:http://blog.csdn.net/a957651480/article/details/23124257


class Images{

var $inputName; //控件名
var $allowType = array(
'image/gif','image/jpg','image/jpeg','image/png','image/x-png','image/pjpeg'
); //上传类型
var $allowSize = 1048576; //限制大小
var $saveDir = ""; //保存目录
var $FileName = ""; //文件名
var $isRename = false; //是否重命名,默认为true
var $errID = 0; //错误代码,默认为0
var $errMsg = ""; //错误信息
var $savePath = ""; //保存路径
var $ImgSize = 0; //图片尺寸

function __construct($inputName,$allowType="",$allowSize="",$saveDir="",$isRename=true){
if(empty($inputName)){
$this->chk_err(-1); //无传入控件名
}else{
$this->inputName = $inputName;
}

if(!empty($allowType)) $this->allowType = $allowType;
if(!empty($allowSize)) $this->allowSize = $allowSize;
if(!empty($saveDir)) $this->saveDir = $saveDir;
if(!empty($isRename)) $this->isRename = $isRename;
}

function is_uploaded(){
if(empty($_FILES[$this->inputName]['name'])){
$this->chk_err(4); //没有文件被上传
}else{
if(is_uploaded_file($_FILES[$this->inputName]['tmp_name'])){
return true;
}else{
$this->chk_err(-2); //文件上传不合法
}
}
}

function chk_type(){
if(!in_array($_FILES[$this->inputName]['type'],$this->allowType)){
$this->chk_err(-3); //上传的文件类型不被允许
}else{
return true;
}
}

function chk_size(){
if($_FILES[$this->inputName]['size'] > $this->allowSize){
$this->chk_err(-4); //上传的文件过大
}else{
return true;
}
}

function move_uploaded(){ //移动上传文件
if(!$this->is_uploaded()){
return false;
}

if(!$this->chk_size()){
return false;
}

if(!$this->chk_type()){
return false;
}

//重命名
if($this->isRename){
$arrTmp = pathinfo($_FILES[$this->inputName]['name']);
$extension = strtolower($arrTmp['extension']);
$file_newname = $this->FileName; //重命名新文件
}else{
$file_newname = $_FILES[$this->inputName]['name'];
}

if(!file_exists($this->saveDir)){ //判断保存目录是否存在
mkdir($this->saveDir,0777,true); //建立保存目录
}

//移动文件
$result = move_uploaded_file($_FILES[$this->inputName]['tmp_name'],$this->saveDir."/".$file_newname);

if($result){
$path = $this->savePath = $this->saveDir."/".$file_newname; //文件的成功保存路径
return $path;
}else{
$this->chk_err($_FILES[$this->inputName]['error']);
}

}

//判断出错信息
function chk_err($errID){
$this->errID = $errID;

switch($this->errID){
case -4:
$this->errMsg = '只能上传1M以内的图片 | [返回]';
break;
case -3:
$this->errMsg = '这不是一张图片 | [返回]';
break;
case -2:
$this->errMsg = '文件上传不合法 | [返回]';
break;
case -1:
$this->errMsg = '无控件名传入 | [返回]';
break;
case 1:
$this->errMsg = '上传的文件超出了php.ini中upload_max_filesize设定的最大值 | [返回]';
break;
case 2:
$this->errMsg = '上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值 | [返回]';
break;
case 3:
$this->errMsg = '文件只有部分被上传 | [返回]';
break;
case 4:
$this->errMsg = '请选择一张图片 | [返回]';
break;
default:
break;
}
return false;

}

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频