WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP-Problem bei automatischer Bildvorschau (http://www.wcm.at/forum/showthread.php?t=164260)

Satan_666 22.04.2005 20:59

PHP-Problem bei automatischer Bildvorschau
 
Hallo, PHP-Gurus!

Ich quäle mich derzeit mit einem doofen PHP-Problem rum und hoffe, dass man mir sagen kann, wo der Hund begraben liegt. Es geht darum, dass ich von allen .JPG-Dateien eines Directories eine Thumb-Vorschau erstellen will. Dazu habe ich mal folgendes Script geschrieben:

Zitat:

header("Content-type: image/jpeg");
$scale=3;
$size=getimagesize($image);
$width=round($size[0]/$scale);
$height=round($size[1]/$scale);
$src=imagecreatefromjpeg($image);
$dest=imagecreate($width,$height);
imagecopyresized($dest,$src,0,0,0,0,$width,$height ,$size[0],$size[1]);
imagejpeg($dest);
imagedestroy($dest);
imagedestroy($src);
Ausgelesen und angezeigt wird das Directory wie folgt:

Zitat:

$verz=dir("bilder/.");
while ($datei=$verz->read())
{
if ($eregi(".jpg$",$datei)):
echo("<a href='$datei'>");
echo("[img]thumbs.php?image=$datei[/img]");
echo("</a>\n");
endif;
}
Soweit funktioniert das auch, allerdings mit folgenden 'Schönheitsfehler': Die Thumbs werden farblich nicht korrekt wieder gegeben; es sieht so aus, als ob beim Verkleinern nur mehr 16 Farben zur Verfügung stehen, wodurch sie klarerweise nicht mehr viel Ähnlichkeit mit dem Original haben. Viele Bilder haben sogar mehr Ähnlichkeit mit einem SW- denn als Farbbild!

Any ideas? Thanks.....

HOK 22.04.2005 21:05

Hier eine Funktion dich ich mal gemacht habe.
//-----------------------------------------------------
function make_thumb($Grafikdatei,$GrafikPfadIn,$GrafikPfadO ut,$ThumbnailHoehe){

$GrafikPfadDateiIn=$GrafikPfadIn."/".$Grafikdatei;
$GrafikPfadDateiOut=$GrafikPfadOut."/".$Grafikdatei;

$Bilddaten = getimagesize("$GrafikPfadDateiIn");

$OriginalBreite = $Bilddaten[0];
$OriginalHoehe = $Bilddaten[1];


$ThumbnailHoehe = 40;
$ThumbnailBreite = (int) ($Bilddaten[0]/$Bilddaten[1]*$ThumbnailHoehe);

if($Bilddaten[2]==1)
{
$Originalgrafik = ImageCreateFromGIF($GrafikPfadDateiIn);
$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImageGIF($Thumbnailgrafik, $GrafikPfadDateiOut);
}
elseif($Bilddaten[2]==2)
{
$Originalgrafik = ImageCreateFromJPEG($GrafikPfadDateiIn);
$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImageJPEG($Thumbnailgrafik, $GrafikPfadDateiOut);
}
elseif($Bilddaten[2]==3)
{
$Originalgrafik = ImageCreateFromPNG($GrafikPfadDateiIn);
$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
ImagePNG($Thumbnailgrafik, $GrafikPfadDateiOut);
}


}//function end
//-----------------------------------------------------

Greetz
HOK

cg32 22.04.2005 21:12

Versuch mal
$dest=ImageCreateTrueColor($width,$height);

Welche PHP Version läuft auf dem Server?

T.dot 22.04.2005 21:20

Ist ein bekanntest PHP "Problem". Ab einer bestimmten Version sollte nur mehr die Funktion imagecreatetruecolor(...) verwendet werden. Dies findest du auch in der PHP Dokumentation auf de.php.net und über Googlesuche.

Im Endeffekt brauchst du folgendes:
$img_src=imagecreatefromjpeg($g_srcfile); //Sourcefile einlesen
$img_dst=imagecreatetruecolor($g_width,$g_height); //neues Bild mit gewünschter Größe
imagecopyresized( $img_dst,$img_src,0,0,0,0, $g_width, $g_height, $o_width, $o_height); //Bild kopieren
imagejpeg($img_dst, $g_destfile, $g_imgcomp); //Bild speichern

viel Spaß!

Sloter 22.04.2005 23:34

Eher ein Problem mit gd-1.8 und gd-2.0 und nicht ein PHP Problem.

Sloter

Satan_666 25.04.2005 08:29

Thanks, Leute - der Tipp war goldrichtig!

:cool:


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag