imgurl/api/tinypng.php

90 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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;
}
}
?>