Sidcom
Anmeldedatum: 26.01.2010 Beiträge: 1
|
Verfasst am: 21.02.2010 17:13 Titel: Thumbnails speichern |
|
|
Ich habe letztens das Script in die Finger bekommen und finde es sehr praktisch.
Nur, dass die Thumbs jedesmal aufs neue generiert werden, störte mich.
Da der Punkt auf der ToDo-Liste steht, hilft vielleicht folgender neue Code für die thumbnail.php weiter:
| Code: |
<?php
include 'admin/_config.php';
$image = $_GET['image'];
$folder = $_GET['folder'];
$imagethumb = $settings['image_loc'].$folder."/thumbs/".$image.".jpg";
$image = $folder."/".$image;
$image = $settings['image_loc'].$image;
$thumb = false;
$imagedata = getimagesize($image);
if($imagedata[0] > $settings['pre_width']){
$x = $settings['pre_width'];
$y = ($settings['pre_width'] / $imagedata[0]) * $imagedata[1];
$y = round($y,0);
}else{
$x = $imagedata[0];
$y = $imagedata[1];
}
// Check if you are in a subfolder ($folder is set).
if ($folder)
{
$thumbsfolder=$settings['image_loc'].$folder."/thumbs";
// Create "thumbs" directory if it doesn't exist.
if(!file_exists($thumbsfolder)) mkdir($thumbsfolder, 0755);
}
// If there is a thumbimage use it.
if (file_exists($imagethumb))
{
header('Content-Type: image/jpeg');
$img = readfile($imagethumb);
imageJPEG($img);
imagedestroy($img);
$thumb=true;
break;
}
switch($imagedata[2]){
case 1: //GIF
$src = ImageCreateFromGIF($image);
$dst = ImageCreateTrueColor($x,$y);
ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$imagedata[0],$imagedata[1]);
$bordercolor = ImageColorAllocate ($src, 0, 0, 0);
imagerectangle($dst, 0, 0, $x-1, $y-1, $bordercolor);
header("Content-Type: image/jpeg");
imageJPEG($dst,'',100);
if(!$thumb) imageJPEG($dst, $imagethumb,100);
imagedestroy($src);
imagedestroy($dst);
break;
case 2: //JPG
$src = ImageCreateFromJPEG($image);
$dst = ImageCreateTrueColor($x,$y);
ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$imagedata[0],$imagedata[1]);
$bordercolor = ImageColorAllocate ($src, 0, 0, 0);
imagerectangle($dst, 0, 0, $x-1, $y-1, $bordercolor);
header("Content-Type: image/jpeg");
imageJPEG($dst,'',100);
if(!$thumb) imageJPEG($dst, $imagethumb,100);
imagedestroy($src);
imagedestroy($dst);
break;
case 3: //PNG
$src = ImageCreateFromPNG($image);
$dst = ImageCreateTrueColor($x,$y);
ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$imagedata[0],$imagedata[1]);
$bordercolor = ImageColorAllocate ($src, 0, 0, 0);
imagerectangle($dst, 0, 0, $x-1, $y-1, $bordercolor);
header("Content-Type: image/jpeg");
imageJPEG($dst,'',100);
if(!$thumb) imageJPEG($dst, $imagethumb,100);
imagedestroy($src);
imagedestroy($dst);
break;
default:
die('Ungültiges Bild gefunden. Bitte wenden Sie sich an den Webmaster');
break;
}
?>
|
Dabei wird jeweils ein Unterordner "thumbs" erstellt, in dem die Thumbs gespeichert werden.
Offene Punkte:
* Thumbs werden nicht aktualisiert, wenn das Bild aktualisiert wird
* Thumbs werden nicht gelöscht, wenn das Bild gelöscht wird.
Für meine Zwecke reicht es, wenn der entsprechende Thumb oder das ganze Verzeichnis bei Bedarf per Hand gelöscht wird.
Besser wäre natürlich irgendeine Überprüfung, die das automatisch macht.
Zusätzlich muss die Datei browsefolder_tdimg.html geändert werden, damit $folder und $image separat übergeben, statt als gemeinsame Variable.
| Code: |
<td align="center">
<span class="smaller">
<a href="{url}display.php?folder=$folder&image=$image" target="_self"><img src="{url}thumbnail.php?folder=$folder&image=$image" border="0" alt="Preview" /></a><br />
$anz_comments Kommentare<br />
</span>
</td>
|
mfg
Sidcom |
|