Стискайте зображення для веб-сайту за допомогою reSmush.it у PHP
Опубліковано в PHP
Зображення роблять ваш веб-сайт красивим і додають кращий досвід для відвідувачів. Однак зображення також можуть впливати на продуктивність сайту і робить швидкість вашого сайту шалено повільною. І всі ми знаємо, що повільніші веб-сайти не можуть досягти успіху в Інтернеті.
У цій статті ми покажемо вам, як стискати зображення для веб-сайтів за допомогою reSmush.it у PHP. Користуючись цією послугою, користувачі можуть зменшити розмір зображень своїх веб-сайтів. Це допоможе поліпшити швидкість сторінки. ReSmush.it – це безкоштовний інструмент компресора зображень. Користувач може стискати скільки завгодно зображень. Не існує такого обмеження кількості зображень.
На момент написання цієї статті досі reSmush.it стискає понад 7 мільярдів зображень і все ще враховує. Цей номер доводить, що це досить популярна послуга серед користувачів.
Починаємо
Давайте створимо просту форму, куди користувач може завантажити зображення. Після надсилання зображення за допомогою PHP ми надішлемо його в служби reSmush.it і отримаємо оптимізовану версію нашого зображення.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" accept="image/*" /></p>
<input type="submit" name="submit" value="Submit">
</form>
Тут ми додали кнопку введення файлу та кнопку подання. Ми також використовували атрибут, accept="image/*"
який дозволяє вибирати лише файли зображень.
Стискайте зображення для веб-сайту в PHP
Тепер ми маємо взаємодіяти з API reSmush.it. Ми збираємося написати код, який виконує наступні кроки.
- Завантажте зображення на наш сервер.
- Надішліть завантажене зображення в кінцеву точку API reSmush.it.
- Отримує шлях оптимізованого зображення.
- Зберігайте цю оптимізовану версію на нашому сервері, замінивши оригінальне зображення.
Перш ніж продовжити, переконайтеся, що ви увімкнули розширення cURL на своєму сервері.
<?php
if (isset($_POST['submit'])) {
//allowed file types
$arr_file_types = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];
if (!(in_array($_FILES['image']['type'], $arr_file_types))) {
die('Only image is allowed!');
}
if (!file_exists('uploads')) {
mkdir('uploads', 0777);
}
move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/'. $_FILES['image']['name']);
// optimize image using reSmush.it
$file = getcwd(). '/uploads/'. $_FILES['image']['name'];
$mime = mime_content_type($file);
$info = pathinfo($file);
$name = $info['basename'];
$output = new CURLFile($file, $mime, $name);
$data = array(
"files" => $output,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.resmush.it/?qlty=80');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if (curl_errno($ch)) {
$result = curl_error($ch);
}
curl_close ($ch);
$arr_result = json_decode($result);
// store the optimized version of the image
$ch = curl_init($arr_result->dest);
$fp = fopen(getcwd(). '/uploads/'. $name, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo "File uploaded successfully.";
}
?>
У наведеному вище коді я встановив значення якості 80, що рекомендується. Ви можете налаштувати це число на більш-менш. Ми зберігаємо зображення всередині uploads
каталогу. У вашому випадку ви можете налаштувати цей каталог.
Сподіваюся, ви розумієте, як стискати зображення для веб-сайту в PHP за допомогою reSmush.it. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.
Пов’язані статті
- TinyPNG Стиснення зображень за допомогою PHP
- Посібник із завантаження та стиснення зображень у Laravel
- Оптимізація зображень за допомогою пакету artisansweb / image-optimizer