1) doresc să nu salveze imaginea in cache (cred că am rezolvat această problemă, dar nu sunt sigur)
2) doresc doar jpg/png/gif să fie valide, pentru restul extensiilor să dea o eroare
3) vreau ca în cazul în care imaginile au background transparent să fie transparent, momentan nu apare transparent
4) în cazul imaginilor .gif animate, animația nu merge (știu că gd nu suportă animații, dar nu știu altă metodă)
Cod: Selectaţi tot
<?php
$url = $_GET['url'];
$allowed = array('jpg','gif','png');
$extension = pathinfo($url, PATHINFO_EXTENSION);
if(in_array($extension, $allowed)){
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$image = curl_exec($ch);
curl_close($ch);
if ($extension == 'jpg' || $extension == 'jpeg') {
header("Content-type: image/jpeg");
}
else if ($extension == 'png') {
header("Content-type: image/png");
}
else if ($extension == 'gif') {
header("Content-type: image/gif");
}
$im = imagecreatefromstring($image);
$tw = imagesx($im);
$th = imagesy($im);
if ($extension == 'jpg' || $extension == 'jpeg') {
imagealphablending($im,TRUE);
imagejpeg($im, NULL, 100);
}
else if ($extension == 'png') {
imagealphablending($im,TRUE);
imagepng($im, NULL, 9, PNG_ALL_FILTERS);
}
else if ($extension == 'gif') {
imagegif($im);
}
//imagealphablending($im,TRUE);
//imagepng($im, NULL, 9, PNG_ALL_FILTERS);
//imagejpeg($im, NULL, 100);
imagedestroy($im);
}
?>