2017-08-31 2 views
0

Ich habe Kopf für Stunden und Stunden geschlagen und ich kann nicht für das Leben von mir herauszufinden, wie man ein Bild mit dem gleichen Verhältnis beim Hochladen mit einem einfachen Formular Größe ändern. Wenn jemand ein größeres Bild als 2048px horizontal oder vertikal hochlädt, möchte ich es auf eine Größe von 2048px skalieren und es dann in einem Ordner speichern.Größe mit demselben Verhältnis auf mehrere Bilder von Upload ändern PHP

Da ich im Grunde wieder zu kratzen bin mit nur meiner Form ich nichts habe Sie leider zu zeigen, aber vor allem gesucht und über GD gelesen hat, aber für mich nicht funktioniert ...

Alle Tipps sind sehr viel geschätzt!

EDIT:

if(isset($con, $_POST['save_button'])){ 
    // IMAGE PROCESSING 
    $name = $_FILES['file_upload']['name']; 
    $tmp_name = $_FILES['file_upload']['tmp_name']; 
    $type = $_FILES['file_upload']['type']; 
    $size = $_FILES['file_upload']['size']; 
    $error = $_FILES['file_upload']['error']; 

    move_uploaded_file($tmp_name, "social_images/$name.jpg"); 

    function resize_image($img, $w, $h, $crop=FALSE) { 
     list($width, $height) = getimagesize($img); 
     $r = $width/$height; 
     if ($crop) { 
      if ($width > $height) { 
       $width = ceil($width-($width*abs($r-$w/$h))); 
      } else { 
       $height = ceil($height-($height*abs($r-$w/$h))); 
      } 
      $newwidth = $w; 
      $newheight = $h; 
     } else { 
      if ($w/$h > $r) { 
       $newwidth = $h*$r; 
       $newheight = $h; 
      } else { 
       $newheight = $w/$r; 
       $newwidth = $w; 
      } 
     } 
     $src = imagecreatefromjpeg($img); 
     $dst = imagecreatetruecolor($newwidth, $newheight); 
     imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
     return $dst; 
    } 

    $img = resize_image("social_images/$name.jpg", 780, 780); 

    header("location: index.php"); 
    exit(); 
} 

Antwort

2

Frisch erneut versucht und erneut getestet:

<?php 
function shazam($file, $w, $h) { 
    list($width, $height) = getimagesize($file); 

    if ($width > $height) { 
     $r = ($w/$width); 
     $newwidth = $w; 
     $newheight = ceil($height * $r); 
    } 

    if ($width < $height) { 
     $r = ($h/$height); 
     $newheight = $h; 
     $newwidth = ceil($width * $r); 
    } 

    if ($width == $height) { 
     $newheight = $h; 
     $newwidth = $w; 
    } 

    $src = imagecreatefromjpeg($file); 
    $tgt = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresampled($tgt, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    return $tgt; 
} 

$img = shazam("thepicwithpath.jpg", 850, 850); 
imagejpeg($img, "theresizedpicwithpath.jpg", 75); 
?> 

Beachten Sie, dass der imagejpeg() am Ende, was tatsächlich ist die neue Datei erzeugt.

+0

Und hier ist der Rest: https://stackoverflow.com/questions/14649645/resize-image-in-php – deg

+0

Vielen Dank für die schnelle Antwort! Ich habe es jetzt schon ein bisschen ausprobiert, aber ich habe immer noch nicht den Dreh raus. Würden Sie sich bitte den Code ansehen? den Post bearbeitet – Nilsson1188

+0

Keine Sorge. Bitte überprüfen Sie die Antwort für das bekannte Arbeitsbeispiel (um fair zu sein, habe ich es nur mit Landschaften getestet, aber ich bin ziemlich zuversichtlich). – deg

Verwandte Themen