Перейти к содержимому

Фотография

Инструкция по оптимизации изображений с использованием Node.js и Cloudinary


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Обществовед

Обществовед

    Свой человек

  • Администрация
  • 9 214 сообщений
  • Пол:Мужчина

Отправлено 18 Январь 2025 - 11:43

Всегда делал через сервисы оптимизацию. Но есть способы делать это в автоматическом варианте. Просто загружая фото в папку и получать обработанные в другой папке. Результат - отличный. Инструкция поможет вам автоматизировать процесс загрузки изображений на Cloudinary, их обработки (например, конвертации в формат WebP) и сохранения обработанных файлов в локальную папку. Такой подход удобен для оптимизации изображений перед их размещением на веб-сайте или в приложении. 
 
Шаг 0. Регистрация в Cloudinary и получение данных
  • Зарегистрируйтесь на Cloudinary:
    Перейдите на официальный сайт Cloudinary, создайте учетную запись, указав имя, email и пароль.

    Получите данные для API:
    В личном кабинете перейдите в раздел Dashboard. Найдите следующие данные:
    • Cloud Name: Имя облака. API Key: Ключ API. API Secret: Секретный ключ API.
  • Добавьте данные в файл index.js:
     cloudinary.config({ cloud_name: 'ваш_cloud_name', api_key: 'ваш_api_key', api_secret: 'ваш_api_secret' }); 
Шаг 1. Установка Node.js
  • Скачайте и установите Node.js: Перейдите на официальный сайт Node.js и скачайте последнюю LTS-версию.
    Во время установки убедитесь, что включили галочку "Automatically install necessary tools".
  • Проверьте установку:
    Откройте терминал (Command Prompt или PowerShell) и выполните команды:
    node -v
    npm -v
    Они отобразят версии Node.js и npm, подтверждая успешную установку.
Шаг 2. Создание проекта
  • Создайте папку для вашего проекта, например:
    mkdir D:\img-optimiz
    cd /d D:\img-oprimiz
  • Инициализируйте проект:
    npm init -y
    Это создаст файл package.json, в котором будут храниться данные о проекте и его зависимостях.
Шаг 3. Установка зависимостей
  • Установите пакет Cloudinary:
    npm install cloudinary
  • Убедитесь, что он установлен. Вы увидите папку node_modules в директории проекта.
Шаг 4. Создание файла index.js
  • В той же папке создайте файл index.js (через любой текстовый редактор или в терминале):
    echo > index.js
  • Откройте файл и добавьте следующий код:
     const fs = require('fs');
    const path = require('path');
    const https = require('https');
    const cloudinary = require('cloudinary').v2;
    
    // Настройка Cloudinary
    cloudinary.config({
      cloud_name: 'ваш_cloud_name', // Замените на ваш cloud_name
      api_key: 'ваш_api_key',       // Замените на ваш API ключ
      api_secret: 'ваш_api_secret' // Замените на ваш секретный ключ
    });
    
    // Папки
    const inputFolder = 'D:/img-optimiz/images'; // Папка с исходными изображениями
    const outputFolder = 'D:/img-optimiz/img-opt'; // Папка для сохранения обработанных изображений
    
    // Убедитесь, что выходная папка существует
    if (!fs.existsSync(outputFolder)) {
      fs.mkdirSync(outputFolder, { recursive: true });
    }
    
    // Чтение всех файлов из папки
    fs.readdir(inputFolder, (err, files) => {
      if (err) {
        return console.log('Ошибка чтения папки:', err);
      }
    
      // Фильтруем только изображения
      files.filter(file => /\.(jpg|jpeg|png|gif|webp)$/i.test(file))
        .forEach(file => {
          const filePath = path.join(inputFolder, file);
    
          // Загружаем и обрабатываем изображение на Cloudinary
          cloudinary.uploader.upload(filePath, { format: 'webp', quality: 'auto' }, (error, result) => {
            if (error) {
              console.log(`Ошибка загрузки ${file}:`, error);
            } else {
              console.log(`Файл ${file} обработан:`, result.secure_url);
    
              // Скачиваем обработанное изображение обратно
              const outputFilePath = path.join(outputFolder, `${path.basename(file, path.extname(file))}.webp`);
              const fileStream = fs.createWriteStream(outputFilePath);
    
              https.get(result.secure_url, response => {
                response.pipe(fileStream);
    
                fileStream.on('finish', () => {
                  console.log(`Обработанный файл сохранен: ${outputFilePath}`);
                });
              }).on('error', err => {
                console.log(`Ошибка при скачивании ${file}:`, err);
              });
            }
          });
        });
    });
     
Шаг 5. Запуск проекта
  • Убедитесь, что все пути и настройки указаны верно. Запустите проект командой:
    node index.js
    Скрипт автоматически загрузит изображения из папки D:/img-optimiz/images, обработает их через Cloudinary и сохранит оптимизированные файлы в папке D:/img-optimiz/img-opt.
Советы по упрощению работы
  • Автоматический запуск через .bat файл:
    Создайте файл start.bat со следующим содержимым:
     @echo off cd /d D:\img-optimiz node index.js pause 
  • Запуск через npm script:
    Добавьте в файл package.json в секцию scripts:
     "scripts": { "start": "node index.js" } 
    Теперь проект можно запускать командой:
    npm start
Результат. 
 
До обработки
 
Screenshot_60.png
 
После обработки
 
Screenshot_61.png
Готово! Если возникнут вопросы, пишите.
  • 1


Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 скрытых пользователей