<?php
header('Content-type: image/PNG');
$image=@imagecreatefrompng('http://www.phpernote.com/images/logo.png');
imagepng($image,'logo.png',9); //注意后面那个数字0,这里即压缩等级,参数范围:0-9*/
imagedestroy($image);
//这里进行图片压缩,目前只压缩png/jpg格式
if($image->getClientMimeType() == "image/png"){//图片格式
$src = @imagecreatefrompng ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagepng($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/jpeg") {//图片格式
$src = @imagecreatefromjpeg ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagejpeg($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/gif") {//图片格式
$src = @imagecreatefromgif ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagegif($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/wbmp") {//图片格式
$src = @imagecreatefromwbmp ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagewbmp($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}
function upload_cos(Illuminate\Http\Request $request)
{
$appid = config('file.tengxun_cos.appid');//获取配置参数
$region = config('file.tengxun_cos.region');//获取配置参数
$bucket = config('file.tengxun_cos.bucket');//获取配置参数
$SecretId = config('file.tengxun_cos.SecretId');//获取配置参数
$SecretKey = config('file.tengxun_cos.SecretKey');//获取配置参数
$Folder = config('file.tengxun_cos.Folder');//获取配置参数
if ($request->hasFile('file')) {//获取file标签
$image = $request->file('file');//获取file标签
$new_name = time() . '_' . rand(1000000, 9999999) . '.' . $image->getClientOriginalExtension();//新文件名
$cosClient = new Client(//实例化上传类配置参数
array(
'region' => $region,
'credentials' => array(
'appId' => $appid,
'secretId' => $SecretId,
'secretKey' => $SecretKey
)
)
);
if($image->getClientSize() > 1048576){//压缩图片
//这里进行图片压缩,目前只压缩png/jpg格式
if($image->getClientMimeType() == "image/png"){
$src = @imagecreatefrompng ($image->getRealPath());
list($width,$height) = getimagesize($image->getRealPath());
$newwidth = $width /2;
$newheight = $height/2;
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($tmp, $image->getRealPath(), 50);
imagedestroy($tmp);
}else if ($image->getClientMimeType() == "image/jpeg") {
$src = @imagecreatefromjpeg ($image->getRealPath());
list($width,$height) = getimagesize($image->getRealPath());
$newwidth = $width /2;
$newheight = $height/2;
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($tmp, $image->getRealPath(), 50);
imagedestroy($tmp);
}
}
$result_upload = $cosClient->putObject(//执行上传
array(
'Bucket' => $bucket,
'Key' => $Folder.$new_name,
'Body' => file_get_contents($image->getRealPath())
)
);
$res['src_hash']=str_replace('"','',$result_upload['ETag']);//图片一个编码
$res['file_name']=$new_name;//新文件名
$res['file_path']=urldecode($result_upload['ObjectURL']);//上传后路径
$res['file_size']=getUriLen(urldecode($result_upload['ObjectURL']));//压缩上传后的大小,调用下面函数用curl获取图片header头来获得压缩后大小
$res['original_name']=$image->getClientOriginalName();//原始文件名
$res['mimeType']=$image->getClientMimeType();//文件类型
$response = array(
'status' => 200,
'message' => '上传成功',
'result'=>$res
);
} else {
$response = array(
'status' => 500,
'message' => '请选择要上传的文件'
);
}
return $response;
}
function getUriLen($uri)
{
ob_start();
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1); //nobody是关键
$okay = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s+(\d+)/';
preg_match($regex, $head, $matches);
return $matches[1];
}
header('Content-type: image/PNG');
$image=@imagecreatefrompng('http://www.phpernote.com/images/logo.png');
imagepng($image,'logo.png',9); //注意后面那个数字0,这里即压缩等级,参数范围:0-9*/
imagedestroy($image);
//这里进行图片压缩,目前只压缩png/jpg格式
if($image->getClientMimeType() == "image/png"){//图片格式
$src = @imagecreatefrompng ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagepng($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/jpeg") {//图片格式
$src = @imagecreatefromjpeg ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagejpeg($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/gif") {//图片格式
$src = @imagecreatefromgif ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagegif($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}else if ($image->getClientMimeType() == "image/wbmp") {//图片格式
$src = @imagecreatefromwbmp ($image->getRealPath()); //创建画布,从缓存文件路径载入图片
list($width,$height) = getimagesize($image->getRealPath()); //获取宽高并赋值
$newwidth = $width/4; //压缩后宽
$newheight = $height/4; //压缩后高
$tmp = imagecreatetruecolor($newwidth,$newheight); //压缩后宽高创建一个空图片
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //将缓存文件复制到新建空图片,
imagewbmp($tmp, $image->getRealPath(), 9); //新建图片替换缓存文件
imagedestroy($tmp); //清除新建文件,缓存文件被压缩后的替换
}
function upload_cos(Illuminate\Http\Request $request)
{
$appid = config('file.tengxun_cos.appid');//获取配置参数
$region = config('file.tengxun_cos.region');//获取配置参数
$bucket = config('file.tengxun_cos.bucket');//获取配置参数
$SecretId = config('file.tengxun_cos.SecretId');//获取配置参数
$SecretKey = config('file.tengxun_cos.SecretKey');//获取配置参数
$Folder = config('file.tengxun_cos.Folder');//获取配置参数
if ($request->hasFile('file')) {//获取file标签
$image = $request->file('file');//获取file标签
$new_name = time() . '_' . rand(1000000, 9999999) . '.' . $image->getClientOriginalExtension();//新文件名
$cosClient = new Client(//实例化上传类配置参数
array(
'region' => $region,
'credentials' => array(
'appId' => $appid,
'secretId' => $SecretId,
'secretKey' => $SecretKey
)
)
);
if($image->getClientSize() > 1048576){//压缩图片
//这里进行图片压缩,目前只压缩png/jpg格式
if($image->getClientMimeType() == "image/png"){
$src = @imagecreatefrompng ($image->getRealPath());
list($width,$height) = getimagesize($image->getRealPath());
$newwidth = $width /2;
$newheight = $height/2;
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($tmp, $image->getRealPath(), 50);
imagedestroy($tmp);
}else if ($image->getClientMimeType() == "image/jpeg") {
$src = @imagecreatefromjpeg ($image->getRealPath());
list($width,$height) = getimagesize($image->getRealPath());
$newwidth = $width /2;
$newheight = $height/2;
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($tmp, $image->getRealPath(), 50);
imagedestroy($tmp);
}
}
$result_upload = $cosClient->putObject(//执行上传
array(
'Bucket' => $bucket,
'Key' => $Folder.$new_name,
'Body' => file_get_contents($image->getRealPath())
)
);
$res['src_hash']=str_replace('"','',$result_upload['ETag']);//图片一个编码
$res['file_name']=$new_name;//新文件名
$res['file_path']=urldecode($result_upload['ObjectURL']);//上传后路径
$res['file_size']=getUriLen(urldecode($result_upload['ObjectURL']));//压缩上传后的大小,调用下面函数用curl获取图片header头来获得压缩后大小
$res['original_name']=$image->getClientOriginalName();//原始文件名
$res['mimeType']=$image->getClientMimeType();//文件类型
$response = array(
'status' => 200,
'message' => '上传成功',
'result'=>$res
);
} else {
$response = array(
'status' => 500,
'message' => '请选择要上传的文件'
);
}
return $response;
}
function getUriLen($uri)
{
ob_start();
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1); //nobody是关键
$okay = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s+(\d+)/';
preg_match($regex, $head, $matches);
return $matches[1];
}