Bilder sehen nach verkleinern komisch aus

TsEnG

Mitglied
Hi,

ich habe ein kleines Galerie Prog geschrieben das mit alle bilder 1. in thumbnails umwandelt und 2. die bilder auf eine max. größe verkleinert. Nun ist das problem das wenn das bild verkleinert wird, das es danach komisch aussieht ich habe so das gefühl das ich da nen antialias drüber laufen lassen muss .. es ist so kantig... aber die funktion imageantialias hat mir irgendwie nicht weitergeholfen. Vielleicht habt ihr ja ne idee ... hier der Quellcode:


PHP:
if(isset($_POST[submitimg]))
{
	$index=$_POST[topid]."/".$_POST[subid];
	# GET FILE
	$file_name = $_FILES['file']['name'];
	$file_size = $_FILES['file']['size'];
	$file_type = $_FILES['file']['type'];
	$file_tmp_name = $_FILES['file']['tmp_name'];
	
	function createThumb($img_src, $img_width , $img_height, $des_src) {
      $im = imagecreatefromjpeg($img_src);
	  	imageantialias($im,true);
      list($src_width, $src_height) = getimagesize($img_src);
      if($src_width >= $src_height) {
         $new_image_width = $img_width;
         $new_image_height = $src_height * $img_width / $src_width;
      }
      if($src_width < $src_height) {
         $new_image_height = $img_width;
         $new_image_width = $src_width * $img_height / $src_height;
      }


		$new_image =ImageCreateTrueColor($new_image_width,$new_image_height); 
      imagecopyresized($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
	
		if($img_width > 200){	
			$originx = imagesx($new_image) - 120;
      	$originy = imagesy($new_image) - 10;

			$black = @imagecolorallocate ($new_image, 0, 0, 0);
			$white = @imagecolorallocate ($new_image, 255, 255, 255);
		
		imagettftext($new_image, 15, 0, $originx, $originy, $white, "arialf","ffasseln.de");
		imagettftext($new_image, 15, 0, $originx+2, $originy+2, $black, "arialf","ffasseln.de");
			//imagestring ($new_image, 10, $originx, $originy, "ddd", $white);
  			//imagestring($new_image, 6, $originx+2, $originy+2, "ddd", $black);
		}
		imageantialias($im,true);
      imagejpeg($new_image, $des_src, 100);
    }
	
	if($error  == "" && $file_size >= "2000000") $error = "Die Bild-Datei sollte nicht mehr als 200 kb gro&szlig; sein!";

	$file_endung = strrev(substr(strtolower(strrev($file_name)),0,3));
	if($error == "" && $file_endung != "jpg"){
      $error = "Die Bild-Datei hat keine G&uuml;ltige Dateiendung. Erlaubt sind nur 'jpg' Bilder.";}
	  	  
	if($error == "" && move_uploaded_file($file_tmp_name, $root.$index."/.TMPimage.jpg")){
		
		# MAKE ENTRY
		$path=$root.$index;
		mysql_query("INSERT INTO galery_img (subid, topid, title, description , path) VALUES ( '$_POST[subid]','$_POST[topid]','$_POST[title]','$_POST[description]', '$path') ") or die(mysql_error());
		$sql=mysql_query("SELECT max(id) FROM galery_img");
		$imgid=mysql_fetch_row($sql);
			# CREATE IMAGES
			createThumb($root.$index."/.TMPimage.jpg", 100, 100, $root.$index."/"."ffasseln".$imgid[0]."_th.jpg");
			list($src_width, $src_height) = getimagesize($root.$index."/.TMPimage.jpg");
			if(($src_width<=550) OR ($src_height<=413)){
			copy($root.$index."/.TMPimage.jpg",$root.$index."/"."ffasseln".$imgid[0]."_bg.jpg");
			}else{
			createThumb($root.$index."/.TMPimage.jpg", 550, 413, $root.$index."/"."ffasseln".$imgid[0]."_bg.jpg");
			
			}
			
		}else $error = "Die Index-Datei dieser Galerie ist fehlerhaft.";
		
}
 
Verwende [phpf]imagecopyresampled[/phpf] anstatt [phpf]imagecopyresized[/phpf] und [phpf]imagecreatetruecolor[/phpf] (hast Du schon) statt [phpf]imagecreate[/phpf]. [phpf]imageantialias[/phpf] wendet nicht beim Aufruf einen Weichzeichner auf das Bild an, wenn ich das im Handbuch richtig verstehe, sondern aktiviert diesen in der Verwendung von nachfolgend aufgerufenen Funktionen. Die Funktion sollte also direkt nach dem Erzeugen des Bildes aufgerufen werden.

Gruß hpvw
 
Zurück