Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmiana rozmiaru obrazu PHP

O ile mi wiadomo, nie możesz zmienić rozmiaru obrazu przed przesyłanie go. (Mogę się mylić!) Jednak po przesłaniu obrazu trafia on do pliku tymczasowego. Możesz zmienić rozmiar obrazu tymczasowego i skopiować go do miejsca docelowego.

Ten kod został zaadaptowany z fragmentu w FliquidStudios:Zmiana rozmiaru obrazów w PHP za pomocą GD i Imagick .

Ponieważ (wydaje się) chcesz utrzymać stałą szerokość, tak naprawdę nie musisz wykonywać wielu testów proporcji.

Aktualizacja:

Powinieneś być w stanie po prostu użyć tego zamiast oryginalnego kodu. Większość z nich pozostaje niezmieniona.

<?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie informacji o czasie:wymagana strefa czasowa?

  2. Auto-inkrementacja nie resetuje się w MySQL

  3. Pobrać dane z dwóch tabel z relacją klucza obcego w Django?

  4. Laravel 5.3 Tworzenie modeli Pole zwraca nie ma wartości domyślnej

  5. UKŁADANIE „utf8_general_ci” jest nieprawidłowe dla ZESTAWU ZNAKÓW „latin1”