Структура проекта ImgTool

Приложение для обработки изображений с возможностью конвертации в PDF и ZIP, редактирования и управления файлами.

project/ ├── index.html # Главная HTML-страница приложения ├── script.js # Основной JavaScript-код приложения └── styles.css # Стили приложения

Основные файлы проекта

index.html

Главный HTML-файл приложения. Содержит:

script.js

Основной JavaScript-код приложения. Содержит:

styles.css

Стили приложения. Содержит:

Основные функциональные модули

Загрузка и управление файлами

Drag-and-Drop загрузка

Позволяет перетаскивать файлы в выделенную область. Поддерживаются изображения (JPG, PNG, GIF, WEBP, SVG) и PDF-файлы.

Реализация: Обработчики событий dragover, dragleave и drop в script.js

Выбор файлов через проводник

Клик по области загрузки открывает стандартный диалог выбора файлов.

Реализация: Скрытый input type="file" в HTML и обработчик события change в JavaScript

Отображение загруженных файлов

Загруженные изображения отображаются в виде миниатюр с возможностью выбора, удаления и просмотра.

Реализация: Функция renderImages() в script.js и соответствующие стили

Сортировка перетаскиванием

Изображения можно перетаскивать для изменения их порядка с помощью библиотеки SortableJS.

Реализация: Функция setupSortable() в script.js

Редактирование изображений

Просмотр в полном размере

Клик по миниатюре открывает модальное окно с изображением в полном размере.

Реализация: Функции openModal(), closeImageModal() и связанные обработчики

Обрезка изображений

В режиме редактирования доступна обрезка изображений с помощью библиотеки Cropper.js.

Реализация: Функции openEditModal(), cropImage() и инициализация Cropper

Конвертация форматов

Возможность конвертировать изображения между форматами JPG, PNG и WEBP.

Реализация: Функция convertImage() с использованием canvas.toBlob()

Навигация между изображениями

В модальном окне просмотра можно переключаться между изображениями с помощью кнопок или клавиш клавиатуры.

Реализация: Функции showPrevImage(), showNextImage() и обработчик клавиатуры

Экспорт файлов

Экспорт в PDF

Создание PDF-документа из изображений с помощью библиотеки jsPDF.

Реализация: Функции downloadAsPdf() и addImageToPdf()

Экспорт в ZIP

Создание ZIP-архива с изображениями с помощью библиотеки JSZip.

Реализация: Функции downloadAsZip() и addImageToZip()

Настройка ширины изображений

Слайдер для установки ширины выходных изображений при экспорте.

Реализация: Обработчик input для imageWidthSlider

Имя выходного файла

Поле для ввода имени файла при экспорте.

Реализация: Поле filenameInput и его использование в функциях экспорта

Работа с PDF

Конвертация PDF в изображения

PDF-файлы конвертируются в набор изображений (по одному на страницу) с помощью PDF.js.

Реализация: Функция processPdfFile() с использованием PDF.js

Настройки конвертации PDF

Модальное окно с настройками качества и масштаба перед конвертацией PDF.

Реализация: Функции showPdfSettingsModal(), updatePreviewQuality() и связанные обработчики

Индикатор прогресса

Отображение прогресса конвертации PDF с возможностью отмены.

Реализация: Функции showProgress(), updateProgress() и элементы интерфейса

Пользовательский интерфейс

Темная/светлая тема

Переключение между темами с сохранением состояния.

Реализация: Функция toggleTheme() и CSS-переменные в styles.css

Аккордеон с информацией

Разворачивающиеся секции с инструкцией, информацией о конфиденциальности и используемых библиотеках.

Реализация: Функция setupAccordion() и соответствующие стили

Адаптивный дизайн

Интерфейс адаптируется под разные размеры экранов с помощью медиа-запросов.

Реализация: Медиа-запросы в styles.css

Управление состоянием кнопок

Кнопки активируются/деактивируются в зависимости от состояния приложения.

Реализация: Функция updateUIState() и обработчики событий

Управление файлами

Выбор изображений

Возможность выбрать несколько изображений для массовых операций.

Реализация: Коллекция selectedImages и чекбоксы в интерфейсе

Удаление выбранных

Удаление всех выбранных изображений одной кнопкой.

Реализация: Функция deleteSelected()

Переименование файлов

Массовое переименование файлов по шаблону.

Реализация: Функция renameFiles()

Очистка всего

Удаление всех загруженных файлов и сброс состояния.

Реализация: Функция clearAll()

Используемые библиотеки

Особенности реализации