Я сделал файл, который отвечает за загрузку изображений, и эти изображения затем перемещаются в папку на сервере. Я думаю, что я не могу изменить размер изображения непосредственно в массиве $ _FILES, поэтому я думаю, что я должен изменить размер изображения после того, как на сервере, так что мой вопрос заключается в том, как изменить размеры изображений, находящихся на сервере?
Это часть кода, который у меня есть:
//This is after getting target which is the file saved on the server move_uploaded_file($_FILES[$str]['tmp_name'], $target); scale_image($target);
Теперь функция scale_image ()
function scale_image($image) { if(!empty($image)) //the image to be uploaded is a JPG I already checked this { $source_image = imagecreatefromjpeg($image); $source_imagex = imagesx($source_image); $source_imagey = imagesy($source_image); $dest_imagex = 300; $dest_imagey = 200; $image = imagecreatetruecolor($dest_imagex, $dest_imagey); imagecopyresampled($image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey); } }
Но это, похоже, не работает, оно перемещает файл, но не изменяется.
PHP встроен в библиотеку GD .
Существует множество функций для управления изображениями, однако нет необходимости повторно изобретать колесо.
Проверьте этот принцип для простого класса манипуляции с изображениями – https://gist.github.com/880506
Вот пример использования …
$im = new ImageManipulator($_FILES['field_name']['tmp_name']); $im->resample(640, 480); // resize to 640x480 $im->save('/path/to/destination/image.jpg', IMAGETYPE_JPEG);
Я не создавал файл на сервере, поэтому я сделал move_uploaded_file ($ _ FILES [$ str] ['tmp_name'], $ target); scale_image ($ цель, $ цель);
Теперь функция scale_image ()
function scale_image($image,$target) { if(!empty($image)) //the image to be uploaded is a JPG I already checked this { $source_image = imagecreatefromjpeg($image); $source_imagex = imagesx($source_image); $source_imagey = imagesy($source_image); $dest_imagex = 300; $dest_imagey = 200; $image2 = imagecreatetruecolor($dest_imagex, $dest_imagey); imagecopyresampled($image2, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey); imagejpeg($image2, $target, 100); } }
Спасибо вам большое, ресурс, который вы мне дали, помог мне создать эту функцию.
Переместите загруженный файл в каталог tmp (используйте tmp_name в $ _FILES для исходного местоположения), прочитайте его с помощью gd, измените размер и сохраните его в конечном каталоге.
http://php.net/manual/en/function.move-uploaded-file.php http://us3.php.net/manual/en/function.imagecreate.php http://us3.php.net/ ручной / EN / function.imagecopyresized.php