sql >> Database >  >> RDS >> Mysql

PHP-afbeeldingsgrootte wijzigen

Voor zover ik weet, kun je het formaat van de afbeelding niet voordat het uploaden ervan. (Ik kan het mis hebben!) Echter, wanneer je de afbeelding uploadt, gaat deze in een tijdelijk bestand. U kunt het formaat van de tijdelijke afbeelding wijzigen en de gewijzigde afbeelding naar de uiteindelijke bestemming kopiëren.

Deze code is aangepast van een fragment op FliquidStudios:Het formaat van afbeeldingen in PHP wijzigen met GD en Imagick .

Aangezien (het lijkt erop) dat je de breedte constant wilt houden, hoef je niet echt veel verhoudingstesten uit te voeren.

Bijwerken:

U zou dit eenvoudig moeten kunnen gebruiken in plaats van uw originele code. Het meeste is ongewijzigd.

<?php

// resizes an image to fit a given width in pixels.
// works with BMP, PNG, JPEG, and GIF
// $file is overwritten
function fit_image_file_to_width($file, $w, $mime = 'image/jpeg') {
    list($width, $height) = getimagesize($file);
    $newwidth = $w;
    $newheight = $w * $height / $width;

    switch ($mime) {
        case 'image/jpeg':
            $src = imagecreatefromjpeg($file);
            break;
        case 'image/png';
            $src = imagecreatefrompng($file);
            break;
        case 'image/bmp';
            $src = imagecreatefromwbmp($file);
            break;
        case 'image/gif';
            $src = imagecreatefromgif($file);
            break;
    }

    $dst = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    switch ($mime) {
        case 'image/jpeg':
            imagejpeg($dst, $file);
            break;
        case 'image/png';
            imagealphablending($dst, false);
            imagesavealpha($dst, true);
            imagepng($dst, $file);
            break;
        case 'image/bmp';
            imagewbmp($dst, $file);
            break;
        case 'image/gif';
            imagegif($dst, $file);
            break;
    }

    imagedestroy($dst);
}

// init file vars
$pic  = $_FILES['photo']['name'];
$target = 'uploads/' . basename( $_FILES['photo']['name']);
$temp_name = $_FILES['photo']['tmp_name'];
$type = $_FILES["photo"]["type"];

// Connects to your Database 
mysql_connect("hostname", "username", "password") or die(mysql_error()) ; 
mysql_select_db("database") or die(mysql_error()) ; 

// get form data
$name = mysql_real_escape_string(isset($_POST['name']) ? $_POST['name'] : 'No name');

//Writes the information to the database 
mysql_query("INSERT INTO `table` (name, photo) VALUES ('$name','$pic')") ; 

// resize the image in the tmp directorys
fit_image_file_to_width($temp_name, 200, $type);

//Writes the photo to the server
if(move_uploaded_file($temp_name, $target)) {

    //Tells you if its all ok 
    echo "The file ". basename( $_FILES['photo']['name'] ). " has been uploaded"; 

} else {

    //Gives and error if its not 
    echo "Sorry, there was a problem uploading your file."; 

}

?>


  1. Kan iemand helpen uitleggen waarom het niet gebruiken van een SQL JOIN een slechte gewoonte en verkeerd is?

  2. Locatie van databasetabellen - MySQL - Windows XP

  3. Hoe MySQL-databaseschema op GitHub opnemen?

  4. Hoe percentage te berekenen met een SQL-statement