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: ... ippets.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....
curl error
Moderator: General Moderators
- flying_circus
- Forum Regular
- Posts: 732
- Joined: Wed Mar 05, 2008 10:23 pm
- Location: Sunriver, OR
Re: curl error
It doesnt look like you have curl installed.maddali wrote:Fatal error: Call to undefined function curl_init() in C:\wamp\www\imageget.php on line 12
Could somebody help me out with this....
check phpinfo() to see if curl is loaded.
Re: curl error
I've modified the php.ini file and now I get a new problem which displays the url I've given in the adrress bar...any suggestions??
Re: curl error
I was 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
any help would be greatly appreciated.
Maddali
Re: curl error
comment the content-type header, and refresh the page
probably there is a notice/warning that breaks the image
probably there is a notice/warning that breaks the image