Категории

HTML + JavaScript - изменение размера картинки

23.01.2026 | коды из категории: Создание сайтов

Загрузи свою картинку и измени её размер

html


  <h1>Загрузи свою картинку и измени её размер</h1>

  <div class="upload-area">
    <label for="imageUpload">Выбери файл изображения:</label>
    <input type="file" id="imageUpload" accept="image/*">
  </div>

  <div class="controls hidden" id="resizeControls">
    <label for="widthSlider">Ширина: <span id="widthValue">300</span> px</label>
    <input type="range" id="widthSlider" min="50" max="1200" value="300">

    <label for="heightSlider">Высота: <span id="heightValue">200</span> px</label>
    <input type="range" id="heightSlider" min="50" max="800" value="200">
  </div>
  
  <img id="resizableImage" src="" alt="Твоя картинка" class="hidden">
<button id="downloadBtn" class="hidden">Скачать изображение</button>

java-script


  <script>
    const fileInput = document.getElementById('imageUpload');
    const img = document.getElementById('resizableImage');
    const resizeControls = document.getElementById('resizeControls');

    const widthSlider = document.getElementById('widthSlider');
    const heightSlider = document.getElementById('heightSlider');
    const widthValue = document.getElementById('widthValue');
    const heightValue = document.getElementById('heightValue');

    // Обработка выбора файла
    fileInput.addEventListener('change', (e) => {
      const file = e.target.files[0];
      if (!file || !file.type.startsWith('image/')) {
        alert('Пожалуйста, выберите изображение (например, JPG, PNG).');
        return;
      }

      const reader = new FileReader();
      reader.onload = (event) => {
        img.src = event.target.result;
        img.classList.remove('hidden');

        // Показываем элементы управления
        resizeControls.classList.remove('hidden');
downloadBtn.classList.remove('hidden');
        // Устанавливаем начальные значения слайдеров по реальному размеру картинки
        img.onload = () => {
          widthSlider.value = img.naturalWidth;
          heightSlider.value = img.naturalHeight;
          widthValue.textContent = img.naturalWidth;
          heightValue.textContent = img.naturalHeight;

          // Применяем начальный размер
          img.style.width = img.naturalWidth + 'px';
          img.style.height = img.naturalHeight + 'px';
        };
      };
      reader.readAsDataURL(file);
    });

    // Изменение ширины
    widthSlider.addEventListener('input', () => {
      const w = widthSlider.value;
      img.style.width = w + 'px';
      widthValue.textContent = w;
    });

    // Изменение высоты
    heightSlider.addEventListener('input', () => {
      const h = heightSlider.value;
      img.style.height = h + 'px';
      heightValue.textContent = h;
    });
// Кнопка "Скачать"
const downloadBtn = document.getElementById('downloadBtn');

downloadBtn.addEventListener('click', () => {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');

  // Устанавливаем размеры canvas по текущему отображаемому размеру изображения
  const displayWidth = parseInt(img.style.width) || img.naturalWidth;
  const displayHeight = parseInt(img.style.height) || img.naturalHeight;

  canvas.width = displayWidth;
  canvas.height = displayHeight;

  // Рисуем изображение на canvas
  ctx.drawImage(img, 0, 0, displayWidth, displayHeight);

  // Преобразуем в ссылку для скачивания
  const link = document.createElement('a');
  link.download = 'изменённое-изображение.png';
  link.href = canvas.toDataURL('image/png');
  link.click();
});
  </script>

css


  <style>
    body {
      font-family: sans-serif;
      padding: 20px;
      max-width: 900px;
      margin: 0 auto;
    }
    .upload-area {
      margin-bottom: 20px;
    }
    .controls {
      margin: 20px 0;
    }
    label {
      display: block;
      margin: 10px 0 5px;
    }
    input[type="range"] {
      width: 300px;
    }
    img#resizableImage {
      margin-top: 15px;
      border: 1px solid #ddd;
      max-width: 100%;
      height: auto;
      display: block;
    }
    .hidden {
      display: none;
    }
  </style>


Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Посетителей сегодня: 0
о блоге

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA