Как повернуть изображение, а затем сохранить новое повернутое изображение? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь добавить функциональность для поворота изображения по нажатию кнопки, а затем при нажатии кнопки отправки изображение будет сохранено повернутым. Таким образом, он не может просто визуально вращаться с помощью CSS, но сам файл изображения поворачивается и затем сохраняется поверх исходного файла изображения.

Я пытался сделать это с помощью PHP, используя imagerotate , но все еще не уверен на 100% в правильном способе поворота изображения при нажатии кнопки. И затем сохраните эту повернутую кнопку при отправке.

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>

Просто не уверен, как взять приведенный выше код и заставить его работать при нажатии кнопки. И затем сохраняется при нажатии кнопки отправки. Если есть более простое решение, использующее javascript / jquery, я тоже буду в порядке, если это более простая / лучшая реализация.

1 Ответ

0 голосов
/ 16 мая 2018

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

imagejpeg($rotate, $filename);

Просто будьте осторожны с тем, что JPEG - это формат с потерями, поэтому ЛЮБОЕ сохранение вообще (даже если вы не поворачиваете его) приведет к ухудшению качества изображения. Вы можете указать качество изображения в качестве 3-го параметра для этого же вызова (если вы хотите попытаться сохранить максимально возможное качество за счет увеличения размера файла):

imagejpeg($rotate, $filename, 90); // Saves at 90 quality

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

Чтобы это произошло, изображение должно быть загружено с посетителя на сервер, затем повернуто, а затем посетителю потребуется вручную сохранить изображение на своем собственном компьютере. PHP не может касаться файловых систем машин посетителей и не может заставить браузеры посетителей FORCE загружать и перезаписывать существующий файл.

Так что, если все это на стороне сервера, то подход PHP, который у вас есть, определенно сработает.

...