sql >> Database teknologi >  >> RDS >> Mysql

Ændring af størrelse på PHP-billede

Så vidt jeg ved, kan du ikke ændre størrelsen på billedet før uploader det. (Jeg kan tage fejl!) Men når du uploader billedet, går det ind i en midlertidig fil. Du kan ændre størrelsen på det midlertidige billede og kopiere det ændrede billede til dets endelige destination.

Denne kode blev tilpasset fra et uddrag hos FliquidStudios:Ændring af størrelse på billeder i PHP med GD og Imagick .

Da (det lader til) du ønsker at holde bredden konstant, behøver du egentlig ikke lave en masse forholdstest.

Opdatering:

Du bør blot kunne bruge dette i stedet for din originale kode. Det meste er uændret.

<?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. Størrelse til lagring af IPv4, IPv6-adresser som en streng

  2. Sådan begrænser du rækker i et SQL Server-resultatsæt

  3. mysql bestil varchar felt som heltal

  4. FEJL:tilladelse nægtet til relationstabelnavn på Postgres, mens du prøvede en SELECT som skrivebeskyttet bruger