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