maddali Posted February 15, 2010 Share Posted February 15, 2010 This snippet uses cURL to get a graphic and display a thumbnail image on the page without saving it. <?php $url = $_GET['url']; $url = str_replace("http:/","http://",$url); $allowed = array('jpg','gif','png'); $pos = strrpos($_GET['url'], "."); $str = substr($_GET['url'],($pos + 1)); $ch = curl_init(); $timeout = 0; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // Getting binary data curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $image = curl_exec($ch); curl_close($ch); // output to browser $im = @imagecreatefromstring($image); $tw = @imagesx($im); if(!$tw){ // Font directory + font name $font = '../../fonts/Austrise.ttf'; // Size of the font $fontSize = 18; // Height of the image $height = 32; // Width of the image $width = 250; // Text $str = 'Couldn\'t get image.'; $img_handle = imagecreate ($width, $height) or die ("Cannot Create image"); // Set the Background Color RGB $backColor = imagecolorallocate($img_handle, 255, 255, 255); // Set the Text Color RGB $txtColor = imagecolorallocate($img_handle, 20, 92, 137); $textbox = imagettfbbox($fontSize, 0, $font, $str) or die('Error in imagettfbbox function'); $x = ($width - $textbox[4])/2; $y = ($height - $textbox[5])/2; imagettftext($img_handle, $fontSize, 0, $x, $y, $txtColor, $font , $str) or die('Error in imagettftext function'); header('Content-Type: image/jpeg'); imagejpeg($img_handle,NULL,100); imagedestroy($img_handle); }else{ if($str == 'jpg' || $str == 'jpeg') header("Content-type: image/jpeg"); if($str == 'gif') header("Content-type: image/gif"); if($str == 'png') header("Content-type: image/png"); $th = imagesy($im); $thumbWidth = 200; if($tw <= $thumbWidth){ $thumbWidth = $tw; } $thumbHeight = $th * ($thumbWidth / $tw); $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight); if($str == 'gif'){ $colorTransparent = imagecolortransparent($im); imagefill($thumbImg, 0, 0, $colorTransparent); imagecolortransparent($thumbImg, $colorTransparent); } if($str == 'png'){ imagealphablending($thumbImg, false); imagesavealpha($thumbImg,true); $transparent = imagecolorallocatealpha($thumbImg, 255, 255, 255, 127); imagefilledrectangle($thumbImg, 0, 0, $thumbWidth, $thumbHeight, $transparent); } imagecopyresampled($thumbImg, $im, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $tw, $th); if($str == 'jpg' || $str == 'jpeg'){ imagejpeg($thumbImg, NULL, 100); } if($str == 'gif'){ imagegif($thumbImg); } if($str == 'png'){ imagealphablending($thumbImg,TRUE); imagepng($thumbImg, NULL, 9, PNG_ALL_FILTERS); } imagedestroy($thumbImg); } ?> However,when I tried to ececute it from localhost with the following command... http://localhost/imageget.php?url=http://phpsnips.com/images/phpsnippets.jpg I get an error something like this... Fatal error: Call to undefined function curl_init() in C:\wamp\www\imageget.php on line 12 Could somebody help me out with this.... Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/ Share on other sites More sharing options...
teamatomic Posted February 15, 2010 Share Posted February 15, 2010 Asides from needless munging(you forgot to check $str against $allowed) of $_GET['url'] there is nothing wrong with the php. The problem is most likely that you dont have Curl extension enabled. Check your php.ini fine, uncomment the line extension=php_curl.dll and restart apache HTH Teamatomic Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012367 Share on other sites More sharing options...
maddali Posted February 15, 2010 Author Share Posted February 15, 2010 Now I get a new error... Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in C:\wamp\www\imageget.php on line 43 Error in imagettfbbox function Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012372 Share on other sites More sharing options...
teamatomic Posted February 15, 2010 Share Posted February 15, 2010 That error begins at $font= , what do you have for a font? is the path correct? HTH Teamatomic Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012376 Share on other sites More sharing options...
maddali Posted February 15, 2010 Author Share Posted February 15, 2010 Yes,I cross verified the path and when I changed the font type it worked but I get the same path(http://localhost/imageget.php?url=http://phpsnips.com/images/phpsnippets.jpg) displaying on the screen.... Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012378 Share on other sites More sharing options...
teamatomic Posted February 15, 2010 Share Posted February 15, 2010 just for giggles echo out your url and exit before you initiate curl. HTH Teamatomic Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012391 Share on other sites More sharing options...
maddali Posted February 15, 2010 Author Share Posted February 15, 2010 I'm successful to some extent with this code...When I tried executing the same code on Mac OS...it shows some broken image thumbnail without displaying the image in the url.verifying the log file it shows an image has been retrieved and sent to the server of the original file size.The same happens when I try to run that on IE and chrome but when executed on firefox it shows a blank white display with no broken thumbnail image....Is there anything that can be done with browser or any error in the code. any help would be greatly appreciated. Maddali Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012608 Share on other sites More sharing options...
teamatomic Posted February 16, 2010 Share Posted February 16, 2010 I told you where to start. Right here. $url = str_replace("http:/","http://",$url); the output of this on a correct url is: http:///:domain.com Frankly, your code is kinda poor. Right after you make a bad url you make a var $str which gets the value of the image file extension. Later in the script you assign $str a value of 'some string' then even later in the script you use $str in some if's as an extension. Figure out what you want $str to be. HTH Teamatomic Link to comment https://forums.phpfreaks.com/topic/192083-curl-error/#findComment-1012928 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.