function imageOptimization($path) {
if ($optimization_cat = glob($path.'/*')) {
foreach ($optimization_cat as $object) {
if (is_dir($object)) {
imageOptimization($object);
} else {
$pic = @getimagesize($object);
if (!in_array(pathinfo($object, PATHINFO_EXTENSION), array('jpeg', 'jpg', 'png', 'gif')) || !in_array($pic['mime'], array('image/jpeg', 'image/png', 'image/gif'))) continue;
switch ($pic['mime']) {
case 'image/jpeg': $image = @imagecreatefromJpeg($object); break;
case 'image/png': $image = @imagecreatefromPng($object); break;
case 'image/gif': $image = @imagecreatefromGif($object); break;
}
$width = imageSX($image);
$height = imageSY($image);
if ($width < 800) {
$newSize = array($width, $height);
} else {
$newSize[0] = 800;
$newSize[1] = round($height * 800 / $width);
}
$newImage = imagecreatetruecolor($newSize[0], $newSize[1]);
if ($pic['mime'] == 'image/gif' || $pic['mime'] == 'image/png') {
$white = imagecolorallocate($newImage, 255, 255, 255);
imagefill($newImage, 0, 0, $white);
}
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newSize[0], $newSize[1], $width, $height);
switch ($pic['mime']) {
case 'image/jpeg': imagejpeg($newImage, $object, '85'); break;
case 'image/png': imagepng($newImage, $object); break;
case 'image/gif': imagegif($newImage, $object); break;
}
imagedestroy($newImage);
clearstatcache($object);
}
}
}
}
imageOptimization($_SERVER['DOCUMENT_ROOT'].'/folder');Оптимізація всіх зображень на вебсайті
Доброго дня. У мене є вебсайт, на якому зображення завантажувалося без оптимізації з цифрової камери, відповідно, обсяг директорії із зображеннями дуже великого об’єму. Максимально доцільно використовувати зображення шириною до 800 пікселів. Поділіться будь ласка скриптом PHP, який автоматично оптимізує якість та ширину всіх зображень в директорії.
1 відповідь
-
ДмитроДемонструю функцію imageOptimization, параметром якої є шлях до директорії зображень. Після виконання скрипта всі зображення будуть оптимізовані по якості та розширенні.
|
|