sql >> Databáze >  >> RDS >> Mysql

Změna velikosti obrázku PHP

Pokud je mi známo, nemůžete změnit velikost obrázku před nahrávání. (Mohu se mýlit!) Když však nahrajete obrázek, přejde do dočasného souboru. Můžete změnit velikost dočasného obrázku a zkopírovat obrázek se změněnou velikostí do jeho konečného umístění.

Tento kód byl upraven z fragmentu ve FliquidStudios:Změna velikosti obrázků v PHP pomocí GD a Imagick .

Protože (zdá se), že chcete zachovat konstantní šířku, nemusíte ve skutečnosti provádět mnoho testů poměru.

Aktualizace:

Měli byste být schopni jednoduše použít toto místo vašeho původního kódu. Většina z nich je nezměněna.

<?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. Přidejte 2 měsíce k aktuálnímu časovému razítku

  2. Jak fungují FULLTEXTOVÉ INDEXY ve více sloupcích?

  3. Jak určit umístění datových souborů a souborů protokolu při vytváření databáze na serveru SQL Server

  4. Knee-Jerk PerfMon Counters:Předpokládaná životnost stránky