kostenloser Webspace werbefrei: lima-city


GD erstellt beim Resampling schwarz-weiße Bilder

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ich habe ein Script, das eine Liste ausliest, und dann bestimmte Bilder verkleinert, und anschließend speichert. Leider kommen die Bilder nur in Schwarz/Weiß (genauer gesagt Graustufen) raus. Hat jemand eine Idee, woran das liegen könnte? Hier der Code:

    // Bilddaten feststellen 
    
      $size=getimagesize($bild); 
    
      $breite=$size[0]; 
    
      $hoehe=$size[1]; 
    
      $neueBreite=450; 
    
      $neueHoehe=intval($hoehe*$neueBreite/$breite); 
    
    
    
      if($size[2]==1) { 
    
      // GIF 
    
      $altesBild=ImageCreateFromGIF($bild); 
    
      $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
    
      ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    
    $neueHoehe,$breite,$hoehe); 
    
      ImageGIF($neuesBild, 'verkleinert_'.$bild); 
    
    $a = true;
    
      } 
    
    
    
      if($size[2]==2) { 
    
      // JPG 
    
      $altesBild=ImageCreateFromJPEG($bild); 
    
      $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
    
      ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    
    $neueHoehe,$breite,$hoehe); 
    
      ImageJPEG($neuesBild, 'verkleinert_'.$bild); 
    
    $a = true;
    
      } 
    
    
    
      if($size[2]==3) { 
    
      // PNG 
    
      $altesBild=ImageCreateFromPNG($bild); 
    
      $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
    
      ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    
    $neueHoehe,$breite,$hoehe); 
    
      ImagePNG($neuesBild, 'verkleinert_'.$bild); 
    
    $a = true;
    
      }
    
    
    
    if(!$a) echo '"'.$bild.'" ist in keinem gültigen Format!';

    Die Variable $bild ist bereits gegeben, und enthält den Dateinamen (bzw. Pfad) des Bildes, das verkleinert werden soll.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Vielleicht liegt es am Bild oder an deinem Browser.
  4. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Am Browser kann es schonmal garnicht liegen, da überhaupt kein Bild ausgegeben wird.

    Ich muss noch etwas ergänzen: Vorher hatte ich ein anderes Bild, gleicher Code, nur mit dem kleinen Unterscheid, dass ich die Bilder ausgeben ließ, und nicht speichern. Jetzt ist es andersherum.
  5. Funktioniert das nur bei dir nicht, oder allgemein nicht?
  6. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Überhaupt nicht. Ich habe keine Ahnung, wieso es alles nur in Schwarz-Weiß ausspuckt. Hat vielleicht irgendjemand eine Idee, was falsch sein könnte?
  7. Nein, ich hab mir den Code schon einige Male angesehen, erkenne aber keinen wirklichen Fehler. Ich kann dir nur sagen, dass du vielleicht bessere Ergebnisse erzielen würdest, wenn du imagecreatetruecolor() und imagecopyresampled() nutzt, aber das sollte eigentlich keine Auswirkungen auf das Problem haben. Vielleicht sind die Bilder in irgendeinem exotischen Gif(Jpeg-Forumat abgespeichert, mit dem GD nicht klar kommt.

    Threadtitel geändert, damit es etwas mehr über das Problem aussagt.

    Beitrag zuletzt geändert: 4.10.2009 14:34:41 von nikic
  8. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    nikic schrieb:
    Ich kann dir nur sagen, dass du vielleicht bessere Ergebnisse erzielen würdest, wenn du imagecreatetruecolor() und imagecopyresampled() nutzt, aber das sollte eigentlich keine Auswirkungen auf das Problem haben.

    Könntest du mir bitte den Code so machen? Denn das ist ja der einzige Vorschlag, den es bis jetzt gab.
  9. Einfach imagecreate durch imagecreatetruecolor und imagecopyresized durch imagecopyresampled ersetzen. Aber das sollte wirklich nichts am Problem ändern, sondern die Bildqualität erhöhen.

    Hier eine alte Funktion von mir, die ganz sicher funktioniert:
    function thumb($name, $width)
    	{
        if(file_exists("images/".$name))
    		{
    			if(!file_exists("images/thumbs/".$width."px_".$name))
    			{
    				list($w, $h, $t) = getimagesize("images/".$name);
    				$t = image_type_to_extension($t, false);
    				$ratio = $h/$w;
    				$height = round($width*$ratio);
    				$resized = imagecreatetruecolor($width, $height);
    				if($t=="jpg"||$t="jpeg")
    				{
    					$old = imagecreatefromjpeg("images/".$name);
    				}
    				else if($t=="png")
    				{
    					$old = imagecreatefrompng("images/".$name);
    				}
    				else if($t=="gif")
    				{
    					$old = imagecreatefromgif("images/".$name);
    				}
    				else
    				{
              return "noimg.jpg";
    				}
    				
    				imagecopyresampled($resized, $old, 0, 0, 0, 0, $width, $height, $w, $h);
    				if($t=="jpg"||$t="jpeg")
    				{
    					imagejpeg($resized, "images/thumbs/".$width."px_".$name);
    				}
    				else if($t=="png")
    				{
    					imagepng($resized, "images/thumbs/".$width."px_".$name);
    				}
    				else if($t=="gif")
    				{
    					imagegif($resized, "images/thumbs/".$width."px_".$name);
    				}
    			}
    			
    			return "images/thumbs/".$width."px_".$name;
    		}
    		else
    		{
    			return "noimg.jpg";
    		}
    	}

    Vielleicht findest du anhand dessen doch noch den Fehler...

    Beitrag zuletzt geändert: 4.10.2009 17:25:41 von nikic
  10. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Vielen Dank! Es funktioniert einwandfrei!
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!