PHP изменить размер изображения перед сохранением базы данных mysql?

После того, как я получил сообщение, как изменить размер до меньшей ширины (максимальная ширина – 80, мин – 80) и что я должен проверить в целях безопасности?

Мой текущий код:

if(!empty($_FILES)) { # Resize Image function $return=true; function resizeImage($originalImage,$toWidth,$toHeight){ // Get the original geometry and calculate scales list($width, $height) = getimagesize($originalImage); $xscale=$width/$toWidth; $yscale=$height/$toHeight; // Recalculate new size with default ratio if ($yscale>$xscale){ $new_width = round($width * (1/$yscale)); $new_height = round($height * (1/$yscale)); } else { $new_width = round($width * (1/$xscale)); $new_height = round($height * (1/$xscale)); } // Resize the original image $imageResized = imagecreatetruecolor($new_width, $new_height); $imageTmp = imagecreatefromjpeg ($originalImage); imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height); return $imageResized; } // Get the file information $userfile_name = $_FILES['profile_picture']['name']; $userfile_tmp = $_FILES['profile_picture']['tmp_name']; $userfile_size = $_FILES['profile_picture']['size']; $userfile_type = $_FILES['profile_picture']['type']; $filename = basename($_FILES['profile_picture']['name']); $file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1)); //Only process if the file is a JPG and below the allowed limit if((!empty($_FILES["profile_picture"])) && ($_FILES['profile_picture']['error'] == 0)) { $allowed_image_types = array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",'image/x-png'=>"png",'image/gif'=>"gif"); $allowed_image_ext = array_unique($allowed_image_types); // Do not change this foreach ($allowed_image_types as $mime_type => $ext) { if($file_ext==$ext ){ $return=false; break; } else { $return=true; } } if ($userfile_size > (7*1048576)) { # 7 means 7 mb $return=false; } } else { $return=false; } //Everything is ok, so we can upload the image. if (strlen($return)==0){ $widthAndHeight = getimagesize($userfile_tmp . "." . $file_ext); //EDITED QUESTION $width = $widthAndHeight[0]; $height = $widthAndHeight[1]; if ($width > 80){ $scale = 80/$width; $height = $height * $scale; $data = resizeImage($userfile_name,80,$height,$scale); $data = mysql_real_escape_string($data); } else { $data = mysql_real_escape_string($userfile_name); } $update = mysql_query("UPDATE `avatar` set image = '{$data}' WHERE userid = '" . $_SESSION['userid'] . " . '"); } else { $return=false; } 

Тип данных в базе данных mysql – MediumBlob, поскольку он хранит только небольшой файл

Извините, что не упоминал о моей проблеме, код не работает. Ошибка:

 Warning: getimagesize(C:\wamp\tmp\php991B.tmp.png) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\XXX\avatar.php on line 82**strong text** 

    Лучше всего будет – сохранить изображение в файловой системе и сохранить ссылку на файл в базе данных. (Для изменения размера вы можете использовать GD-библиотеку)

    Попробуйте эту ссылку: http://www.php.net/manual/en/function.imagecopyresized.php

    Если вам действительно не нужно писать свой собственный код для этого, вы можете попробовать некоторые из решений, которые уже есть.

    Это отличный скрипт http://phpthumb.gxdlabs.com/

    Я не уверен, что вы можете сохранить данные изображения в базу данных, используя его, но в худшем случае

    вы изменяете размер изображения и сохраняете его в локальной папке, используя file_get_contents, чтобы прочитать изображение и сохранить в db удалить временное изображение на сервере.

    Но я согласен с теми, кто говорит, что вы должны хранить изображения в файловой системе, а не в базе данных.