| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- include "lib/curlproxy.php";
- $proxy = new proxy();
- if(!isset($_GET["i"])){
-
- header("X-Error: No URL(i) provided!");
- $proxy->do404();
- die();
- }
- try{
-
- // original size request, stream file to browser
- if(
- !isset($_GET["s"]) ||
- $_GET["s"] == "original"
- ){
-
- $proxy->stream_linear_image($_GET["i"]);
- die();
- }
-
- // bing request, ask bing to resize and stream to browser
- if(
- preg_match(
- '/bing.net$/',
- parse_url($_GET["i"], PHP_URL_HOST)
- )
- ){
-
- switch($_GET["s"]){
-
- case "portrait": $req = "&w=50&h=90&p=0&qlt=90"; break;
- case "landscape": $req = "&w=160&h=90&p=0&qlt=90"; break;
- case "square": $req = "&w=90&h=90&p=0&qlt=90"; break;
- case "thumb": $req = "&w=236&h=180&p=0&qlt=90"; break;
- case "cover": $req = "&w=207&h=270&p=0&qlt=90"; break;
- }
-
- $proxy->stream_linear_image($_GET["i"] . $req, "https://bing.net");
- die();
- }
-
- // resize image ourselves
- $payload = $proxy->get($_GET["i"], $proxy::req_image, true);
-
- // get image format & set imagick
- $image = null;
- $format = $proxy->getimageformat($payload, $image);
-
- try{
-
- if($format !== false){
- $image->setFormat($format);
- }
-
- $image->readImageBlob($payload["body"]);
-
- $image_width = $image->getImageWidth();
- $image_height = $image->getImageHeight();
-
- switch($_GET["s"]){
-
- case "portrait":
- $width = 50;
- $height = 90;
- break;
-
- case "landscape":
- $width = 160;
- $height = 90;
- break;
-
- case "square":
- $width = 90;
- $height = 90;
- break;
-
- case "thumb":
- $width = 236;
- $height = 180;
- break;
-
- case "cover":
- $width = 207;
- $height = 270;
- break;
- }
-
- $ratio = $image_width / $image_height;
-
- if($image_width > $width){
-
- $image_width = $width;
- $image_height = round($image_width / $ratio);
- }
- if($image_height > $height){
-
- $ratio = $image_width / $image_height;
- $image_height = $height;
- $image_width = $image_height * $ratio;
- }
-
- $image->setImageBackgroundColor("#504945");
- $image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
-
- $image->stripImage();
- $image->setFormat("jpeg");
- $image->setImageCompressionQuality(90);
- $image->setImageCompression(Imagick::COMPRESSION_JPEG2000);
-
- $image->resizeImage($image_width, $image_height, Imagick::FILTER_LANCZOS, 1);
-
- $proxy->getfilenameheader($payload["headers"], $_GET["i"]);
-
- header("Content-Type: image/jpeg");
- echo $image->getImageBlob();
-
- }catch(ImagickException $error){
-
- header("X-Error: Could not convert the image: (" . $error->getMessage() . ")");
- $proxy->do404();
- }
-
- }catch(Exception $error){
-
- header("X-Error: " . $error->getMessage());
- $proxy->do404();
- die();
- }
|