Принудительно изменить размер и конвертировать любое изображение при загрузке

Я хотел бы принудительно изменить размер и преобразовать любое изображение при загрузке. (?)

if ( $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" || $_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" )
{
if ($_FILES["ufile"]["type"] [$i] == "image/png" || $_FILES["ufile"]["type"] [$i] == "image/gif" || $_FILES["ufile"]["type"] [$i] == "image/jpeg" || $_FILES["ufile"]["type"] [$i] == "image/jpg" )
{
$file=$_FILES["ufile"]["tmp_name"];
list($width, $height) = getimagesize($file);
$new_width = 200;
$new_height = 500;
$dst_image = imagecreatetruecolor($new_width,$new_height);
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg(imagecreatefromstring(file_get_contents($dst_image)), "convert.jpg");
$actual_image_name = $name[$i].'.'.'jpg';
move_uploaded_file("convert.jpg", $path.$actual_image_name);
}

0

Решение

Одна проблема, которую я вижу, заключается в следующем (отсутствуют индексы массива):

$file=$_FILES["ufile"]["tmp_name"];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"]);

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

Тебе нужно:

$file=$_FILES["ufile"]["tmp_name"][$i];
...
$src_image = imagecreatefromjpeg($_FILES["ufile"]["tmp_name"][$i]);

Кроме того, вы должны включить обработку ошибок и их отображение, чтобы вы могли легко обнаруживать подобные проблемы. Вы можете сделать это, добавив что-то вроде этого в начало вашего скрипта:

ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);

Редактировать:

Вы не должны использовать move_uploaded_file() для файла, который не является загрузкой файла, и вам также нужно использовать ресурс изображения, который вы только что сгенерировали для первого параметра imagejpeg функция:

$actual_image_name = $name[$i].'.'.'jpg';
imagejpeg($dst_image, $path.$actual_image_name);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]