mirror of https://github.com/helloxz/imgurl
90 lines
2.6 KiB
PHP
90 lines
2.6 KiB
PHP
<?php
|
||
/*
|
||
@name:TinyPNG图片压缩接口
|
||
@author:xiaoz.me
|
||
*/
|
||
|
||
//载入SDK
|
||
require_once("../sdk/tinypng/Tinify/Exception.php");
|
||
require_once("../sdk/tinypng/Tinify/ResultMeta.php");
|
||
require_once("../sdk/tinypng/Tinify/Result.php");
|
||
require_once("../sdk/tinypng/Tinify/Source.php");
|
||
require_once("../sdk/tinypng/Tinify/Client.php");
|
||
require_once("../sdk/tinypng/Tinify.php");
|
||
//载入配置文件
|
||
require_once("../config.php");
|
||
|
||
//获取图片URL地址
|
||
$imgurl = $_GET['url'];
|
||
//获取URI
|
||
$imguri = str_replace($config['domain'],"",$imgurl);
|
||
//echo $imguri;
|
||
//仅获取域名
|
||
$domain = str_replace("http://","",$config['domain']);
|
||
$domain = str_replace("https://","",$domain);
|
||
$domain = explode("/",$domain); //最终的目的是取出域名
|
||
|
||
|
||
//搜索域名是否匹配
|
||
$sdomain = strpos($imgurl,$domain[0]);
|
||
|
||
if($sdomain == false) {
|
||
echo '地址不合法';
|
||
exit;
|
||
}
|
||
//合法的域名,那我们继续咯
|
||
//在判断下目录是否合法
|
||
$imgdir = explode("/",$imguri);
|
||
//如果目录不是访客目录也不是管理员目录,那就不处理咯
|
||
if(($imgdir[0] != $config['userdir']) && ($imgdir[0] != $config['admindir'])) {
|
||
echo '地址不合法';
|
||
exit;
|
||
}
|
||
//ok,上面都过了,判断下图片类型
|
||
//使用exif_imagetype函数来判断文件类型
|
||
$imguri = '../'.$imguri;
|
||
$file_type = exif_imagetype($imguri);
|
||
switch ( $file_type )
|
||
{
|
||
case IMAGETYPE_JPEG:
|
||
tinypng($config['tinypng'],$config['domain'],$imguri,$imgurl);
|
||
$redata = array("code" => 1,"type" => $file_type);
|
||
echo json_encode($redata);
|
||
break;
|
||
case IMAGETYPE_PNG:
|
||
tinypng($config['tinypng'],$config['domain'],$imguri,$imgurl);
|
||
$redata = array("code" => 1,"type" => $file_type);
|
||
echo json_encode($redata);
|
||
break;
|
||
default:
|
||
$redata = array("code" => 0,"type" => $file_type);
|
||
echo json_encode($redata);
|
||
break;
|
||
}
|
||
?>
|
||
|
||
<?php
|
||
//压缩图片
|
||
function tinypng($api,$host,$imgfile,$imgurl){
|
||
if($api == '') {
|
||
echo '未开启TinyPNG';
|
||
exit;
|
||
}
|
||
else{
|
||
Tinify\setKey($api);
|
||
Tinify\fromFile($imgfile)->toFile($imgfile);
|
||
//获取主机名
|
||
$host = $host."/api/";
|
||
//对压缩后的图片鉴黄
|
||
$ch = curl_init($host."identify.php?url=".$imgurl) ;
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证>证书和hosts
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
|
||
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
|
||
$output = curl_exec($ch) ;
|
||
curl_close($ch);
|
||
|
||
return $imgfile;
|
||
}
|
||
}
|
||
?>
|