2011-01-06 11 views
0

Ich habe ein PHP-Skript für das Hochladen von Bildern, wie untenResize Bild auf Upload php

<?php 
$LibID = $_POST[name]; 
define ("MAX_SIZE","10000"); 
function getExtension($str) { 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 
$errors=0; 
    $image=$_FILES['image']['name']; 
    if ($image) 
    { 
     $filename = stripslashes($_FILES['image']['name']); 
     $extension = getExtension($filename); 
     $extension = strtolower($extension); 
if (($extension != "jpg") && ($extension != "jpeg")) 
     { 
      echo '<h1>Unknown extension!</h1>'; 
      $errors=1; 
      exit(); 
     } 
     else 
     { 
$size=filesize($_FILES['image']['tmp_name']); 
if ($size > MAX_SIZE*1024) 
{ 
    echo '<h1>You have exceeded the size limit!</h1>'; 
    $errors=1; 
    exit(); 
} 
$image_name=$LibID.'.'.$extension; 
$newname="uimages/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) 
{ 
    echo '<h1>image upload unsuccessfull!</h1>'; 
    $errors=1; 
    exit(); 
}}} 
?> 

, die lädt die Bilddatei in einen Ordner „uimages“ in der Wurzel. Ich habe Änderungen an der HTML-Datei für die kompakte Darstellung des Bildes vorgenommen, indem ich "max-height" und "max-width" definiert habe. Aber ich möchte die Bilddatei beim Hochladen skalieren. Die Bilddatei darf eine maximale Breite von 100 px und eine maximale Höhe von 150 px haben. Die Bildproportionen müssen eingeschränkt sein. Das heißt, das Bild kann kleiner als die obigen Abmessungen sein, aber es sollte die Grenze nicht überschreiten. Wie kann ich das möglich machen ??

Vielen Dank im Voraus :)

blasteralfred ..

+1

mögliche Duplikate von [Effiziente JPEG-Bildgrößenanpassung in PHP] (http://stackoverflow.com/questions/12661/efficient-jpeg-image-resizing-in-php) –

+0

Frage ist geschlossen .. aktualisierte Frage hier: http://stackoverflow.com/questions/4615144/rename-image-file-on-upload-php –

+0

Sorry, Löschen würde die Arbeit von allen, die versucht haben, Ihnen hier heraus zu helfen ungültig machen. Bitte wählen Sie die Antwort, die Ihnen am besten geholfen hat. Ein Kommentar, warum Sie von dieser Frage weggegangen sind, wäre auch schön. – Will

Antwort

1

Man kann ein Bild auf Upload nicht die Größe; Es muss zuerst auf dem Server sein.

Dafür können Sie Eric's answer mit ImageMagick sehen. Wenn Sie die GD-Bibliothek verwenden, können Sie this verwenden.

1

Sie können die Größe eines Bildes mit der nativen PHP-GD-Bibliothek ändern. Hier ist ein Link zu einer Funktion, die ich für die Größenänderung eines Bildes in beliebiger Größe geschrieben habe. Es hat Optionen für Letterboxing oder Cropping, um es an das neue Seitenverhältnis anzupassen, und eine ziemlich gute Erklärung.

http://www.spotlesswebdesign.com/blog.php?id=1

1

können Sie 2-Funktionen verwenden, um Bilder nach uploads wie diese

<?php 

function thumbnail($inputFileName, $maxSize = 100) { 
    $info = getimagesize($inputFileName); 
    $type = isset($info['type']) ? $info['type'] : $info[2]; 
    if (!(imagetypes() & $type)) { 
     return false; 
    } 

    $width = isset($info['width']) ? $info['width'] : $info[0]; 
    $height = isset($info['height']) ? $info['height'] : $info[1]; 

    // Calculate aspect ratio 
    $wRatio = $maxSize/$width; 
    $hRatio = $maxSize/$height; 

    // Using imagecreatefromstring will automatically detect the file type 
    $sourceImage = imagecreatefromstring(file_get_contents($inputFileName)); 

    // Calculate a proportional width and height no larger than the max size. 
    if (($width <= $maxSize) && ($height <= $maxSize)) { 
     // Input is smaller than thumbnail, do nothing 
     return $sourceImage; 
    } elseif (($wRatio * $height) < $maxSize) { 
     // Image is horizontal 
     $tHeight = ceil($wRatio * $height); 
     $tWidth = $maxSize; 
    } else { 
     // Image is vertical 
     $tWidth = ceil($hRatio * $width); 
     $tHeight = $maxSize; 
    } 

    $thumb = imagecreatetruecolor($tWidth, $tHeight); 

    if ($sourceImage === false) { 
     // Could not load image 
     return false; 
    } 

    // Copy resampled makes a smooth thumbnail 
    imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height); 
    imagedestroy($sourceImage); 

    return $thumb; 
} 


function imageToFile($im, $fileName, $quality = 80) { 
    if (!$im || file_exists($fileName)) { 
     return false; 
    } 

    $ext = strtolower(substr($fileName, strrpos($fileName, '.'))); 

    switch ($ext) { 
     case '.gif': 
      imagegif($im, $fileName); 
      break; 
     case '.jpg': 
     case '.jpeg': 
      imagejpeg($im, $fileName, $quality); 
      break; 
     case '.png': 
      imagepng($im, $fileName); 
      break; 
     case '.bmp': 
      imagewbmp($im, $fileName); 
      break; 
     default: 
      return false; 
    } 
    return true; 
} 

?> 

Anrufen, um die Größe: $ image = Thumbnail ($ uploadedFile, 300); imageToFile ($ image, $ Ordner); // wenn Sie die Miniaturansicht speichern möchten