Intereting Posts

Изменение размера изображения перед загрузкой PHP

Я не знаю, как изменить размер изображения в PHP, мой код:

for ($index = 1; $index <= 2; $index++) { if (!empty($_FILES["pic$index"]["name"])) { $ext = substr($_FILES["pic$index"]["name"], strrpos($_FILES["pic$index"]["name"], '.') + 1); $dir = "../gallery/$mkdir"; HERE I NEED THE RESIZE OF THE TMP FILE OF IMAGE move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext"); } } 

$ mkdir = имя папки галереи (есть много галерей).

$ dir = где будут размещены фотографии.

$ ext = тип изображения (png, gif или jpg).

цикл foreach выполняется два раза, потому что вы можете загрузить два фото.

Этот скрипт работает хорошо, мне просто нужно изменить размер, и у меня нет идеи, как это сделать.

Solutions Collecting From Web of "Изменение размера изображения перед загрузкой PHP"

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

В моем случае я передаю функции исходное имя файла, а затем имя файла миниатюр.

Вы можете легко адаптировать его для своего случая.

 public static function GenerateThumbnail($im_filename,$th_filename,$max_width,$max_height,$quality = 0.75) { // The original image must exist if(is_file($im_filename)) { // Let's create the directory if needed $th_path = dirname($th_filename); if(!is_dir($th_path)) mkdir($th_path, 0777, true); // If the thumb does not aleady exists if(!is_file($th_filename)) { // Get Image size info list($width_orig, $height_orig, $image_type) = @getimagesize($im_filename); if(!$width_orig) return 2; switch($image_type) { case 1: $src_im = @imagecreatefromgif($im_filename); break; case 2: $src_im = @imagecreatefromjpeg($im_filename); break; case 3: $src_im = @imagecreatefrompng($im_filename); break; } if(!$src_im) return 3; $aspect_ratio = (float) $height_orig / $width_orig; $thumb_height = $max_height; $thumb_width = round($thumb_height / $aspect_ratio); if($thumb_width > $max_width) { $thumb_width = $max_width; $thumb_height = round($thumb_width * $aspect_ratio); } $width = $thumb_width; $height = $thumb_height; $dst_img = @imagecreatetruecolor($width, $height); if(!$dst_img) return 4; $success = @imagecopyresampled($dst_img,$src_im,0,0,0,0,$width,$height,$width_orig,$height_orig); if(!$success) return 4; switch ($image_type) { case 1: $success = @imagegif($dst_img,$th_filename); break; case 2: $success = @imagejpeg($dst_img,$th_filename,intval($quality*100)); break; case 3: $success = @imagepng($dst_img,$th_filename,intval($quality*9)); break; } if(!$success) return 4; } return 0; } return 1; } 

Коды возврата только здесь, чтобы различать различные типы ошибок.

Оглядываясь назад на этот код, мне не нравится трюк «волшебного числа». Мне придется изменить это (например, исключениями).

 if (!empty($_FILES["pic$index"]["name"])) { $ext = substr($_FILES["pic$index"]["name"], strrpos($_FILES["pic$index"]["name"], '.') + 1); $dir = "../gallery/$mkdir"; // Move it if(move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext.tmp")) { // Resize it GenerateThumbnail("$dir/img-$index.$ext.tmp","$dir/img-$index.$ext",600,800,0.80); // Delete full size unlink("$dir/img-$index.$ext.tmp"); } } 

Используйте move_uploaded_file, чтобы переместить его (рекомендуется), а затем вы можете изменить его размер и отправить в конечный пункт назначения. Возможно, вам даже не понадобится «.tmp», вы можете использовать.

  // Move it if(move_uploaded_file($_FILES["pic$index"]["tmp_name"] , "$dir/img-$index.$ext")) // Resize it GenerateThumbnail("$dir/img-$index.$ext","$dir/img-$index.$ext",600,800); 

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

$_FILES["pic$index"]["tmp_name"] , вероятно, / tmp / somepicturesname