Bildbreite variable bei fester höhe?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bildbreite variable bei fester höhe?

    Hallo Leute,

    ich habe hier ein Script, (Gastgeberverzeichnis) bei dem sich jeder Vermieter einloggen kann, und dort seine Bilder hochladen kann (halt von seiner ferienwohnung).

    Nun habe ich aber das Problem, das ich zwar im Adminbereich ein festes Pixel verhältnis angeben kann, was die höhe und auch die Breite betrifft, zb 117px Breite und 70 px hoch, bei Querformatbildern ist das auch schön, wenn jetzt aber jemand ein Hochformatbild lädt, dann wird das bild gestreckt.

    Und jetzt weis ich nicht wie ich die berechnung der Bilder machen kann, damit die höhe immer zb. 70px bleibt, und nur die breite variabel ist.

    Hier erstmal das Script:

    Code:
      //-------------class img-----------------
       
      function addimg($id_site)
      {
       
       
       
       $db  =& JFactory::getDBO();
       $query = "SELECT  wimg, vwimg, vhimg, max_img FROM #__lbresa_config";  $db->setQuery( $query );  $confimg = $db->loadObject();
       
      $datepic = date('Ymdhis');
      $name = $id_site."_".$datepic;
       
            $wimg= $confimg->wimg;
            $vwimg= $confimg->vwimg;
            $vhimg= $confimg->vhimg;
            
            $max_img= $confimg->max_img;
       
       
      $dir = 'components/com_joomloc/images'; $dir_temp = 'components/com_joomloc/images/temp'; 
       
      $ratio = $wimg;
       
       
       
       
       
          if (isset($_FILES['file']))  
          {
              if ($_FILES['file']['error'] == UPLOAD_ERR_OK) 
              {
                 
            $tableau = @getimagesize($_FILES['file']['tmp_name']); 
            if ($tableau == FALSE) { 
               
               unlink($_FILES['file']['tmp_name']); 
               $erreur = "<h1>".JText::_( 'Votre fichier n est pas une image.' )."</h1>"; 
                   echo "$erreur";
            } 
            else { 
                    
              
              
               if ($tableau[2] == 1 || $tableau[2] == 2 || $tableau[2] == 3) { 
                  
                  $file_upload = 'site_'.$id_site."_img_".$name.".jpg";
                        
                        copy ($_FILES['file']['tmp_name'], $dir_temp.'/'.$file_upload); 
                        
       
        $query = "INSERT INTO #__lbresa_img(id, id_site, img) values('', '$id_site', '$file_upload')";
        $db->setQuery( $query );
         $db->query();
       
       // si notre image est de type jpeg --------------------------------------------------------------
       
                  if ($tableau[2] == 2) { 
                     // on crée une image à partir de notre grande image à l'aide de la librairie GD 
                     $src = imagecreatefromjpeg($dir_temp.'/'.$file_upload); 
                  
                          if($tableau[0]<=$ratio and $tableau[1]<=$ratio)
                          {
                          copy ($_FILES['file']['tmp_name'], $dir.'/'.$file_upload); 
                           $src = imagecreatefromjpeg($dir.'/'.$file_upload);
                          }
                          else
                          {
                     // on teste si notre image est de type paysage ou portrait 
                     if ($tableau[0] > $tableau[1]) { 
                        $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
                        imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
                     } 
                     else { 
                        $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
                        imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
                     } 
                     // on copie notre fichier généré dans le répertoire des miniatures 
                     imagejpeg ($im, $dir.'/'.$file_upload); 
                           }
                           
                            $imv = imagecreatetruecolor($vwimg, $vhimg); 
                        imagecopyresampled($imv, $src, 0, 0, 0, 0, $vwimg, $vhimg, $tableau[0], $tableau[1]); 
                           imagejpeg ($imv, $dir.'/vignettes/'.$file_upload);
                           unlink($dir_temp.'/'.$file_upload); 
                          }
           
      //----------
    Kann mir denn dazu jemand einen Tipp geben? Ich weis einfach nicht weiter...?!

  • #2
    Vorher ermitteln ob Hoch oder Querformat, entsprechende Fallunterscheidung, dann klappts auch mit dem Hochformat.

    Ist letztendlich reine Mathematik.

    Kommentar


    • #3
      das ist ein guter ansatz. Mein Problem ist nur, ich weis nicht wie?! Hast du nen Tipp???

      Kommentar


      • #4
        Breite = Wunschhöhe * Originalbreite / Originalhöhe

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X