У меня есть сайт с примерно 1500 изображениями в формате JPEG, и я хочу сжать их все. Пройти через каталоги не проблема, но я не могу найти функцию, которая сжимает JPEG, который уже находится на сервере (я не хочу загружать новый), и заменяет старый.
Есть ли у PHP встроенная функция для этого? Если нет, как я могу прочитать JPEG из папки в скрипт?
Благодарю.
вы не говорите, используете ли вы GD, поэтому я предполагаю это.
$img = imagecreatefromjpeg("myimage.jpg"); // load the image-to-be-saved // 50 is quality; change from 0 (worst quality,smaller file) - 100 (best quality) imagejpeg($img,"myimage_new.jpg",50); unlink("myimage.jpg"); // remove the old image
Я предпочитаю использовать расширение IMagick для работы с изображениями. GD использует слишком много памяти, особенно для больших файлов. Вот фрагмент кода Чарльза Холла в руководстве PHP:
$img = new Imagick(); $img->readImage($src); $img->setImageCompression(Imagick::COMPRESSION_JPEG); $img->setImageCompressionQuality(90); $img->stripImage(); $img->writeImage($dest); $img->clean();
Вам нужно будет использовать библиотеку php gd для этого … Большинство серверов установлено по умолчанию. Есть много примеров, если вы ищете «изменить размер изображения php gd».
Например, посмотрите на эту страницу http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html
Решение, предоставляемое vlzvl, хорошо работает. Однако, используя это решение, вы также можете перезаписать изображение, изменив порядок кода.
$image = imagecreatefromjpeg("image.jpg"); unlink("image.jpg"); imagejpeg($image,"image.jpg",50);
Это позволяет сжать предварительно существующее изображение и сохранить его в том же месте с тем же именем файла.