aw:image
Ein paar Funtktionen die sich über die Jahre bewert haben um per GDlib z.b. Thumbnails zu erstellen.
Im unten downloadbaren zip ist auch ein Bsp. drin wie man die bilder cachen kann.
<?php
function imageCreateFromAny($filepath)
{
$type = exif_imagetype($filepath);
$allowedTypes = array(
1, // gif
2, // jpg
3, // png
);
if (!in_array($type, $allowedTypes))
{return false;}
switch ($type)
{
case 1 :$im = imageCreateFromGif($filepath);
break;
case 2 :$im = imageCreateFromJpeg($filepath);
break;
case 3 :$im = imageCreateFromPng($filepath);
break;
}
return $im;
} ?>
Erstellt aus GIF,JPEG ODER PNG eine php image resource
<?php
function image_get($file,$fromstring=FALSE)
{
if($fromstring===TRUE)
{return @imagecreatefromstring(file_get_contents($file));}
else
{return imageCreateFromAny($file);}
?>
kann auf 2 verschiedene arten ein bild laden, entweder über die funktion imageCreateFromAny() oder was langsamer ist imagecreatefromstring()
<?php
function image_crop($image,$thumb_width = 192,$thumb_height = 120)
{
$width = imagesx($image);
$height = imagesy($image);
$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;
if ( $original_aspect >= $thumb_aspect )
{
$new_height = $thumb_height;
$new_width = $width / ($height / $thumb_height);
}
else
{
$new_width = $thumb_width;
$new_height = $height / ($width / $thumb_width);
}
$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );
imagecopyresampled($thumb,
$image,
0 - ($new_width - $thumb_width) / 2,
0 - ($new_height - $thumb_height) / 2,
0, 0,
$new_width, $new_height,
$width, $height);
return $thumb;
}
?>
Ändert die Größe des Bildes und schneidet wenn nötig die zu großen teile ab.
<?php
function image_output($image,$type="jpeg",$destination=NULL,$quality=60)
{
ob_start();
switch ($type)
{
case "gif":
ImageGif($image,$destination);
break;
case "png":
$pngQuality = ($quality - 100) / 11.111111;
$pngQuality = round(abs($pngQuality));
ImagePng($image,$destination,$pngQuality);
break;
case "jpeg":
case "jpg" :
ImageJpeg($image,$destination,$quality);
break;
}
$img=ob_get_clean();
imagedestroy($image);
header("Content-Type: image/$type");
if(!empty($destination))
{readfile($destination);}
else
{
header("Content-Length: ".strlen($img));
print $img;
}
exit;
}
?>
Nimmt die image resource und gibt sie wieder aus, wenn destination angegeben ist wird das neu erstellte bild dort als datei abgelegt.
Funktionierendes bsp.: Download