mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 19:26 Benutzername: Passwort: Auto-Login

Thema: Verzerrte Bilder nach reduzierung mit imagecopyresized() vom 11.11.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Verzerrte Bilder nach reduzierung mit imagecopyresized()
Seite: Zurück  1, 2
Autor Nachricht
sidisinsane

Dabei seit: 30.01.2006
Ort: Hamburg
Alter: 52
Geschlecht: Männlich
Verfasst Mo 12.11.2007 12:35
Titel

Antworten mit Zitat Zum Seitenanfang

SURE612 hat geschrieben:
mmm
muss ich mal austesten

wir hatten immer probleme mit der quali und deshalb imagemagick verwendet...

Wenn ihr immer Probleme mit der Qualität hattet, liegt es wahrscheinlich daran das ihr die gdlib1 und nicht die gdlib2 (ab PHP 4.3.x glaube ich) verwendet habt. In der alten Version geht nur imagecopyresized (limitierte Anzahl Farben, keine Interpolierung) nicht aber imagecopyresampled.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
oli.s.
Threadersteller

Dabei seit: 08.01.2007
Ort: Lehre
Alter: 36
Geschlecht: Männlich
Verfasst Mo 12.11.2007 15:45
Titel

Antworten mit Zitat Zum Seitenanfang

Danke erstmal für die vielen Antworten!
Also um nochmal genau zu zeigen wie ich vorgehe hab ich hier meinen Codeabschnitt:
Code:
<?php
   }
   
if($_POST['submit']) {   
   //POST Daten abrufen
      $alben = $_POST['alben'];
      $dir = $files;
      $file_type = $_FILES['upload']['type'];
      $file_size = $_FILES['upload']['size'];
      $file_name = $_FILES['upload']['name'];
      $file_src_temp = $_FILES['upload']['tmp_name'];
//Filesize Grenze: 5MB
   if($file_size <= 500000 && ($file_type=="image/jpeg" || $file_type=="image/jpg" || $file_type=="image/gif" || $file_type=="image/png")) {   
      
   //Bild abspeichern ------ später wieder löschen
   if($file_src_temp != ""){
      $saveimage = move_uploaded_file($file_src_temp, "bilder/temp/".$file_name);
      }   
         if($saveimage) {   $tempimage = "bilder/temp/".$file_name; }
         
   //Imagegröße auslesen: nicht kleiner als 600 und nicht größer als 2000 Pixel         ///// ############# AB HIER WEITER DIE IF ABFRAGEN !!!!!!!!!!!!!
   
      $size = getimagesize($tempimage);
         $breite = $size[0];         $hoehe = $size[1];
      if($breite>2500 && $hoehe>2000) {   echo"<span>Dein Bild ist zu groß!</span>";
                                 exit;}
   //Seitenverhältnisse beibehalten: Verkleinern
      if($breite > $hoehe) {
         //Querformat
         $faktor = $breite/$hoehe;         
         $dst_breite = 150;            $dst_hoehe = 150/$faktor;         //Thumbnailgröße
         $dst_breite_tall = 600;         $dst_hoehe_tall = 600/$faktor;      //Vergrößtertes Bild
         }
      if($hoehe > $breite) {
         //Querformat
         $faktor = $hoehe/$breite;         
         $dst_breite = 150/$faktor;            $dst_hoehe = 150;         //Thumbnail
         $dst_breite_tall = 600/$faktor;         $dst_hoehe_tall = 600;      //Vergrößtertes Bild
         }
   //Imagegröße
   //Auswahl, prüfen ob Size nicht zu groß und name
   //Thumbnail erstellen
                     
               $fulldir_t = $dir."t/".$file_name;   //Verzeichnis für Thumbnails
               
         //Funktionsunterscheidung zwischen den Dateiendungen               
         switch($file_type) {
            case "image/jpeg":
                  $source = imagecreatefromjpeg($tempimage);   //Erstellt Abbild des Bilds für
                  break;
            case "image/gif":
                  $source = imagecreatefromgif($tempimage);
                  break;
            case "image/png":
                  $source = imagecreatefrompng($tempimage);
                  break;
               }
               $newimaget = imagecreatetruecolor($dst_breite, $dst_hoehe);   //Legt neues Bild an, mit größe es Thumbnails - im Speicher
                                 // resource dst, resource  src, dsx,dstY, srcX,   srcY, dstW,   dstH, srcW, srcH   
                     imagecopyresized($newimaget, $source, 0, 0, 0, 0, $dst_breite, $dst_hoehe, $breite, $hoehe);   //Speichert das hochgeladene Bild in das Thumbnail
                  
                  
      //Bild speichern
               $fulldir_z = $dir.$file_name;   //Verzeichnis des Bildes
               $newimagez = imagecreatetruecolor($dst_breite_tall, $dst_hoehe_tall);   //Legt neues Bild an, mit der neune Größe des vergrößerten Bildes - im Speicher
                     imagecopyresized ($newimagez, $source, 0, 0, 0, 0, $dst_breite_tall, $dst_hoehe_tall, $breite, $hoehe);
               
               if( imagejpeg($newimagez, $fulldir_z) &&  //normales Bild speichern
               imagejpeg($newimaget, $fulldir_t)) { //Thumbnail speichern
                     echo"<span>Dein Bild wurde gespeichert!</span>";   //Erfolgsausgabe
                     //Formular ausblenden
                     echo"<style type=\"text/css\"><!-- #new_image { display: none } //--></style>";
                     
                     
               imagedestroy($newimaget); //Speicherabbild wieder löschen  - Thumbnail
               imagedestroy($newimagez); //Speicherabbild des normalen Bildes
               imagedestroy($source); //Speicherabbild wieder löschen - Vergrößertes Bild was zur copy erstellt wird
         
      //Temporäre Bilddatei löschen
         $handle = opendir("bilder/temp");
         while(false !== ($readtodelete = readdir($handle))){
         
            if("bilder/temp/".$readtodelete == $tempimage) {
               unlink("bilder/temp/".$readtodelete);
               }
            }
         }   
      }
   }
?>


Also an meiner GD Version kanns nicht liegen. Ich habe PHP Version 5 und GD Version 2.0.28.
Ich benutze ja imagecreatetruecolor() und mit der Qualität hab ich auch schon auf 100% getestet, dort passiert das gleiche. Und ja, es wird wirklich ein kleineres Bild erzeugt und nicht mit HTML skaliert.

Hat jemand noch eine Idee?
Gruß Olli
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
sidisinsane

Dabei seit: 30.01.2006
Ort: Hamburg
Alter: 52
Geschlecht: Männlich
Verfasst Mo 12.11.2007 15:52
Titel

Antworten mit Zitat Zum Seitenanfang

Du verwendest mehrfach "imagecopyresized". Ersetze das einfach mal mit "imagecopyresampled" und berichte dann mal wie es ausschaut.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
oli.s.
Threadersteller

Dabei seit: 08.01.2007
Ort: Lehre
Alter: 36
Geschlecht: Männlich
Verfasst Mo 12.11.2007 16:19
Titel

Antworten mit Zitat Zum Seitenanfang

Jap! Vielen Dank! Jetzt funktioniert das Script 1A so wie es sollte! Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [PHP] GD-ImageCopyResized macht schwarzen BG
Verzerrte Videos
Verzerrte Seitendarstellung
bilder aus bilder gallery in neuem Fenster anzeigen
Bilder ausgabe aus DB, bilder werden nich angezeigt
Bilder über Bilder einfügen ?
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.