Thumbnails erstellen mit Zusatzinfo

Marco_HD

Mitglied
Hi,

ich häng hier schon ne weile an dem Problem und komm nicht weiter. Vielleicht könnte sich das mal jemand der Zeit hat anschauen :)

Ich habe eine Gallerie und möchte Thumbnails ala imageshack generieren.


Folgendes habe ich bereits aber wie gesagt jetzt hängts!

//Thumb aus Jpeg erstellen
$oldpic=ImageCreateFromJPEG($pic);
$max=200;
$oh = imagesy($oldpic); # original height
$ow = imagesx($oldpic); # original width
$new_h = $oh;
$new_w = $ow;
if($oh > $max || $ow > $max){
$r = $oh/$ow;
$new_h = ($oh > $ow) ? $max : $max*$r;
$new_w = $new_h/$r;
}
$newpic=Imagecreatetruecolor($new_w,$new_h);

// Create some colors
$schwarz = imagecolorallocate($newpic, 0, 0, 0);

imagefilledrectangle($newpic, 0, $picinfo[1], $picinfo[0], $picinfo[1]-20, $schwarz);
// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arialf';

// Add the text
imagettftext($newpic, 20, 0, 10, 20, $schwarz, $font, $text);

ImageCopyResized($newpic,$oldpic,0,0,0,0,$new_w,$new_h,ImageSX($oldpic),ImageSY($oldpic));
ImageJPEG($newpic,"th_$pic");
ImageDestroy($newpic);

Möchte einfach immer ganz unten einen schwarzen Balken in dem dann zB: Dateigröße und sowas angezeigt wird. Aber im moment macht er gar nichts.

Bitte um einen Tipp wo es fehlt...

Gruß Marco
 
Hallo!

Versuche es mal so:
PHP:
<?php
//Thumb aus Jpeg erstellen
$oldpic = ImageCreateFromJPEG($pic);
$picinfo = getimagesize($pic);
$max=200;
$oh = imagesy($oldpic); # original height
$ow = imagesx($oldpic); # original width
$new_h = $oh;
$new_w = $ow;
 
if($oh > $max || $ow > $max){
     $r = $oh/$ow;
     $new_h = ($oh > $ow) ? $max : $max*$r;
     $new_w = $new_h/$r;
} 
 
$newpic=Imagecreatetruecolor($new_w,$new_h);
 
// Create some colors
$schwarz = imagecolorallocate($newpic, 0, 0, 0);
$weiss = Imagecolorallocate($newpic, 255, 255, 255);
 
imagefilledrectangle($oldpic, 0, $picinfo[1], $picinfo[0], $picinfo[1]-60, $schwarz);
 
// The text to draw
$text = 'Testing...';
 
// Replace path by your own font path
$font = 'arial.ttf';
 
// Add the text
imagettftext($oldpic, 30, 0, 10, $picinfo[1]-15, $weiss, $font, $text);
ImageCopyResized($newpic,$oldpic,0,0,0,0,$new_w,$new_h,ImageSX($oldpic),ImageSY($oldpic));

ImageJPEG($newpic,"th_$pic");
ImageDestroy($newpic);
?>
Im übrigen kommt schwarzer Text auf schwarzem Hintergrund nicht wirklich gut..... daher habe ich den Text einfach mal weiss gemacht. ;)

Gruss Dr Dau
 
Ohh ja das übersieht man schnell wenn man so versuche macht :-)

habs jetzt mal genauso eingebaut aber es geht nicht wirklich. aber ich werd mir das morgen mal noch genauer anschauen.

Danke für deinen Tipp
 
Was heisst "geht nicht wirklich" genauer?
Die Variable für $pic muss natürlich noch gesetzt werden.
Ansonsten hat das Script bei mir problemlos funktioniert.
 
Hi,

war eine kleine verwechlung drin. Auf mein Beispiel bezogen.
statt:
PHP:
imagefilledrectangle($oldpic, 0, $picinfo[1], $picinfo[0], $picinfo[1]-60, $schwarz);

so:
PHP:
imagefilledrectangle($oldpic, $picinfo[0], $picinfo[1], 0 , $picinfo[1]-60, $schwarz);

Aber vielen Dank für deine Hilfe.


Hast du vielleicht einen Tipp wie ich das ganze noch zentrieren kann?

Gruß

Marco
 
So weit ich weiss, lässt sich die Breite des Textes nicht in Pixel ermitteln..... dann könnte man mit dem Wert den Anfangspunkt der Zeile bestimmen.

Das einzige was ich mir vorstellen könnte, man könnte die Anzahl der Zeichen zählen.
Aber das bringt auch nicht viel..... wenn die Zeile z.b. mit 10 "i" beginnen und mit 10 "m" enden würde, würde die Zeile deutlich aus der Mitte heraus stehen.

Wo wir schon bei der Textbreite sind..... wenn die Zeile mal zu lang sein sollte, wird sie nach rechts abgeschnitten..... weil irgendwann ja das Bild aufhört. ;)
 
Hallo!

Dr Dau hat gesagt.:
So weit ich weiss, lässt sich die Breite des Textes nicht in Pixel ermitteln..... dann könnte man mit dem Wert den Anfangspunkt der Zeile bestimmen.
Darf ich vorstellen? Dr Dau – [phpf]imagettfbbox[/phpf], [phpf]imagettfbbox[/phpf] – Dr Dau ;)

Irgendwo in den Kommentaren von [phpf]imagettftext[/phpf] und/oder [phpf]imagettfbbox[/phpf] sollte sogar stehen, wie man damit einen Text zentriert.

Grüße,
Matthias
 
Naja, ich habe mich noch nie wirklich mit den Image Fuktionen beschäftigt (bisher kein Bedarf gehabt).
Aber Du hast recht, in den Kommentaren steht tatsächlich eine Funktion. :-(
 
Zurück