FANDOM


Das ImageScript läd Bilder von Internetseiten runter und verkleinert sie. Dazu werden als Parameter die url, width und height per httpget übergeben.Die Url stammt aus der Banddatenbank. Width und Height ist vom Client abhängig. Als Ergebnis kommt ein verkleinertes JPG Bild zurück. Dieses Script wird benötigt da die Clients jeweils ihre Displaygröße übermittel und dann die Bilder so klein wie möglich und so groß wie nötig erhalten. Würden die Bilder nicht auf dem Server skalliert würde das bedeuten, das der Client mehr Daten runterladen muss, was teuer und langsam ist und es würde vom Client Rechenleistung verbraucht, was gerade bei alten Handys sehr lange dauern kann.

ScriptBearbeiten

Leider ist das Script nicht besonders performant. Ich würde mich freuen wenn ein PHP Entwickler Verbesserungen vornehmen würde.

Unter anderem denke ich, wird es langfristig auch wichtig sein Bilder nicht bei jedem Aufruf zu skallieren, sondern zu cachen. Ich freue mich auf eure Optimierungen. Besonders für die WebApp wird dieses Script lagsam zum Flaschenhals.

<?

$getUrl = $_GET['url'];
$getWidth = $_GET['width'];
$getHeight = $_GET['height'];

$defaultImage = 'http://www.schroederonline.de/pics/noimage.jpg';

if(isset($getUrl)){
	$imgname = $getUrl;
	$imgname = str_replace("%20", " ", $imgname);
}else{
	$imgname = $defaultImage; 
}


if(isset($getWidth) && isset($getHeight)){
	$maxWidth = $getWidth ;
	$maxHeight = $getHeight;
}


$image = downloadImage($imgname);
$name = $prefix.md5(time().rand());

$suffix = substr($imgname, strlen($imgname)-4, strlen($imgname));

$myFile = $name.$suffix;
saveImage($myFile, $image);
showImage($myFile, $maxWidth, $maxHeight, $suffix);
unlink($myFile);


// Bild runterladen
function downloadImage($url){

	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_HEADER, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$image = curl_exec($ch); 
	return $image;
}

//abspeichern unter myFile
function saveImage($myFile, $image){
	//bild speichern
	$fh = fopen($myFile, 'w') or die("can't open file");
	$stringData = $image;
	fwrite($fh, $stringData);
	fclose($fh);
}

//anzeigen
function showImage($myFile, $maxWidth, $maxHeight, $suffix){
	//bild verkleinern und anzeigen
	$isJPG = true;
	if($suffix == ".png"){
		$isJPG = false;
		#header("Content-type: image/png");
	}

	header("Content-type: image/jpeg");
	$myPic = resizeImage($myFile, $maxWidth, $maxHeight, $isJPG);
	imagejpeg($myPic);
}





function resizeImage($originalImage,$toWidth,$toHeight, $isJPG){

    list($width, $height) = getimagesize($originalImage);
    if($width <= $toWidth && $height <=  $toWidth ){
    	if($isJPG){
    		return imagecreatefromjpeg ($originalImage);
    	}else{
	    	return imagecreatefrompng ($originalImage);
    	}
    }

   if($width >= $height){ 
    	$new_width = ($toWidth);
    	$prozBreite = ($new_width * 100 / $width);    
    	$new_height = ($prozBreite * $height / 100);
	}else{
		$new_height = ($toWidth);
    	$prozBreite = ($new_height * 100 / $height);    
    	$new_width = ($prozBreite * $width / 100);
	}
   
    $imageResized = imagecreatetruecolor($new_width, $new_height);
    if($isJPG){
    	$imageTmp =  imagecreatefromjpeg ($originalImage);
    }else{
    	$imageTmp =  imagecreatefrompng ($originalImage);
    }
    
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    return $imageResized;
} 
?>

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.