hi forengemeinde,
ich benutze ein galerienskript von niklas, was er auch an coder weitergibt (siehe kommentare), da ich schlichtweg keine/kaum ahnung von php habe.
im unteren code eben gibt es diese drei großen bausteine und ich vermute, der mittlere teil ist der, der die thumbnails aus bildern generiert.
bei einem aufruf aus einer htm-datei mit
(<?
include("./Gallery.php");
Gallery("./images/", 5, 80, 80);
?>
werden eben die thumbnails generiert/angezeigt (5 in einer reihe, 80 x 80 pixel). soweit klappt alles hervorragend. ebenso auch der zufällig ausgewählte bereich des thumbnails sieht oft toll aus, aber eben nicht immer.
das problem ist nun, dass ich gern etwas mehr "zoom" vom bild hätte, sozusagen. also, im moment wird ein 80 x 80 pixel großes thumbnail aus einer 1 mb großen datei erstellt. da kann es manchmal sein, dass man einfach nur ein schwarzes thumbnail erhält, da es eine große dunkle fläche im foto gab (himmel, ...).
ich hätte also gern, dass er nicht einfach nur 80 x 80 pixel aus dem bild schneidet, sondern eben etwas mehr aus dem bild "rauszoomt" und dann sein 80 x 80 pixel großes thumbnail schneidet/kreiert. so sieht man mehr vom bild und hat auch auf dem thumbnail eine größere ahnung davon, was man nun eigtl groß klicken wird.
ich hoffe, ich habe das verständnisvoll erklärt. auf dem thumbnail soll man einfach mehr vom bild sehen, ohne natürlich die thumbnail-größe zu ändern.
wäre schön, wenn es dafür eine lösung gibt. danke euch im voraus.
php:
ich benutze ein galerienskript von niklas, was er auch an coder weitergibt (siehe kommentare), da ich schlichtweg keine/kaum ahnung von php habe.
im unteren code eben gibt es diese drei großen bausteine und ich vermute, der mittlere teil ist der, der die thumbnails aus bildern generiert.
bei einem aufruf aus einer htm-datei mit
(<?
include("./Gallery.php");
Gallery("./images/", 5, 80, 80);
?>
werden eben die thumbnails generiert/angezeigt (5 in einer reihe, 80 x 80 pixel). soweit klappt alles hervorragend. ebenso auch der zufällig ausgewählte bereich des thumbnails sieht oft toll aus, aber eben nicht immer.
das problem ist nun, dass ich gern etwas mehr "zoom" vom bild hätte, sozusagen. also, im moment wird ein 80 x 80 pixel großes thumbnail aus einer 1 mb großen datei erstellt. da kann es manchmal sein, dass man einfach nur ein schwarzes thumbnail erhält, da es eine große dunkle fläche im foto gab (himmel, ...).
ich hätte also gern, dass er nicht einfach nur 80 x 80 pixel aus dem bild schneidet, sondern eben etwas mehr aus dem bild "rauszoomt" und dann sein 80 x 80 pixel großes thumbnail schneidet/kreiert. so sieht man mehr vom bild und hat auch auf dem thumbnail eine größere ahnung davon, was man nun eigtl groß klicken wird.
ich hoffe, ich habe das verständnisvoll erklärt. auf dem thumbnail soll man einfach mehr vom bild sehen, ohne natürlich die thumbnail-größe zu ändern.
wäre schön, wenn es dafür eine lösung gibt. danke euch im voraus.
php:
PHP-Code:
// Output array : {image resource, image width, image height}
function getImageResource($imageFile) {
// Get image info
$imageFileInfo = getimagesize($imageFile);
$dataArray[1] = $imageFileInfo[0];
$dataArray[2] = $imageFileInfo[1];
// Create a image resource
if ($imageFileInfo[2] == 1) { $imageFileResource = imagecreatefromgif($imageFile); }
if ($imageFileInfo[2] == 2) { $imageFileResource = imagecreatefromjpeg($imageFile); }
if ($imageFileInfo[2] == 3) { $imageFileResource = imagecreatefrompng($imageFile); }
$dataArray[0] = $imageFileResource;
return $dataArray;
}
// Creates a jpeg image sized as you want focusing randomly at a detail of the reference image
function imageDetailExtract($referenceImage, $thumbnail, $thumbnailWidth, $thumbnailHeight, $thumbnailJpegQuality=70) {
$getImageResource = getImageResource($referenceImage);
// Method to display a image detail
// Coders : problems with little images (To get rid of it, set those two variables to 0)
// Coders : could be also enhanced so as to see more details
$Xposition = round(rand(0, ($getImageResource[1]-$thumbnailWidth)));
$Yposition = round(rand(0, ($getImageResource[2]-$thumbnailHeight)));
// Create the detail image
$thumbnailResource = imagecreatetruecolor($thumbnailWidth,$thumbnailHeight);
imagecopy($thumbnailResource, $getImageResource[0], 0, 0, $Xposition, $Yposition, $getImageResource[1], $getImageResource[2]);
imagejpeg($thumbnailResource, $thumbnail, $thumbnailJpegQuality);
// Destroy image resources
imagedestroy($getImageResource[0]);
imagedestroy($thumbnailResource);
}
// Resizes the given image outputting a jpeg image
function resizeImage($referenceImage, $thumbnail, $maxWidth, $maxHeight, $thumbnailJpegQuality=70) {
$getImageResource = getImageResource($referenceImage);
// Recompute size for fitting (to be validated)
if( $getImageResource[1] > $getImageResource[2]) { $maxHeight = round(($getImageResource[2]/$getImageResource[1])*$maxWidth); }
else { $maxWidth = round(($getImageResource[1]/$getImageResource[2])*$maxHeight); }
// Create resized image
$thumbnailResource = imagecreatetruecolor($maxWidth,$maxHeight);
imagecopyresized($thumbnailResource, $getImageResource[0], 0, 0, 0, 0, $maxWidth, $maxHeight, $getImageResource[1], $getImageResource[2]);
imagejpeg($thumbnailResource, $thumbnail, $thumbnailJpegQuality);
// Destroy image resources
imagedestroy($getImageResource[0]);
imagedestroy($thumbnailResource);
}
Kommentar