Bessere Qualität bei Image Generierung

  • Themenstarter Themenstarter fercules
  • Beginndatum Beginndatum
F

fercules

Um meine Bilder in Thumbnails zu verwandeln, verwende ich eine kleine Thumbnail engine, die die Bilder mit "imagecreatetruecolor" verkleinert und kopiert. Leider wirkt dabei alles relativ pixelig. Gibts vielleicht noch ne Möglichkeit, wie man eine bessere Qualität bei den Thumbnails erreicht? Sonst klickt ja keiner drauf :-))

Liebe Grüße
Fercules
 
kein gdlib

nein, ich bin froh das ich ohne gdlib auskomme. das war ja immer ein drama. so habe ich ein 3kb script welches ohne gdlib arbeitet und ähnliche gute leistungen bringt. dennoch muss man die qualität doch irgendwie verbessern können?

grüße
stephan
 
*klopf klopf*
Wenn du mit imagecreatetruecolor arbeitest, dann verwendest du aber ganz bestimmt die GDlib! ;)
 
neee

ja? :-) zeigs mir - hier die komplette datei zum mit dem textmarker anmalen :-)

<?

$PicPathIn="bilder/vollbild/";
$PicPathOut="bilder/vorschau/";

// Orginalbild

// Bilddaten feststellen
$size=getimagesize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueBreite=100;
$neueHoehe=intval($hoehe*$neueBreite/$breite);

if($size[2]==1) {
// GIF
$altesBild=ImageCreateFromGIF("$PicPathIn"."$bild");
$neuesBild=ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe);
ImageGIF($neuesBild,"$PicPathOut"."klein_"."$bild");
}

if($size[2]==2) {
// JPG
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild");
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild,"$PicPathOut"."klein_"."$bild");
}

if($size[2]==3) {
// PNG
$altesBild=ImageCreateFromPNG("$PicPathIn"."$bild");
$neuesBild=ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild,"$PicPathOut"."klein_"."$bild");
}


$Thumbnail=$PicPathOut."klein_".$bild;

?>
 
Jap, du verwendest definitiv die GDlib. Zu erkennen an allen Funktionen mit Image-Prefix!
Je nach Version deiner GDlib bzw. deines PHP-Paketes kannst du das mal versuchen:
PHP:
<?php

$PicPathIn="bilder/vollbild/"; 
$PicPathOut="bilder/vorschau/";

// Orginalbild 

// Bilddaten feststellen 
$size=getimagesize("$PicPathIn"."$bild"); 
$breite=$size[0]; 
$hoehe=$size[1]; 
$neueBreite=100; 
$neueHoehe=intval($hoehe*$neueBreite/$breite); 

//Anmerkung: Das GIF-Format wird von neueren PHP-/GDlib-Versionen nicht mehr unterstüzt!
if($size[2]==1) { 
// GIF
$altesBild=ImageCreateFromGIF("$PicPathIn"."$bild"); 
$neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe);
imageantialias($neuesBild, true);
ImageCopyResampled($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe); 
ImageGIF($neuesBild,"$PicPathOut"."klein_"."$bild"); 
} 

if($size[2]==2) { 
// JPG 
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild"); 
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
imageantialias($neuesBild, true);
ImageCopyResampled($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe); 
ImageJPEG($neuesBild,"$PicPathOut"."klein_"."$bild", 100); 
} 

if($size[2]==3) { 
// PNG 
$altesBild=ImageCreateFromPNG("$PicPathIn"."$bild"); 
$neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe); 
imageantialias($neuesBild, true);
ImageCopyResampled($neuesBild,$altesBild,0,0,0,0,
$neueBreite,$neueHoehe,$breite,$hoehe); 
ImagePNG($neuesBild,"$PicPathOut"."klein_"."$bild"); 
} 


$Thumbnail=$PicPathOut."klein_".$bild; 

?>
 
Zurück