• Обратная связь
  • Карта сайта
  • Отзыв
  • Комментарии
  • Форум
discord
Технические заметки
  • Главная
  • Лекции
  • Практикум
  • Обзоры
  • Сравнение
  • Нормы
  • События
  • Вход
ГлавнаяMaxSite CMS
9+10 ошибок при монтаже автоматической системы пожаротушения на основе С2000-АСПТ
Компонент taggallery-collage для галереи изображений на MaxSite CMS.

Сохраняем EXIF при изменении изображения в плагине Taggallery.

5 января 2012 г.Просмотров: 2067Комментарии: 0
MaxSite CMSMaxSiteTaggalleryПлагин

В MaxSite CMS загружать изображения можно как при помощи встроенного загрузчика MaxSite CMS, так и плагина-файлового менеджера. EXIF данные исходного файла загружаются в файл, создаваемый на сервере.

Если изображения загружать без изменений, то EXIF данные можно извлекать из файла изображения на сервере.

Если же происходит изменение изображения (ресайз, наложение водной метки) - EXIF теряются.

Как предотвратить потерю EXIF при изменении изображения?

Почему, при наложении водной метки и ресайзе, теряются EXIF данные об изображении?

Все очень просто.

Для изменения размера или наложения воной метки используется библиотека GD2. При изменении исходного изображения, вместо исходного изображения - создается новое. В это новое изображение и записывается измененная картинка.

EXIF же данные никак не переносятся.

Зачем нужны EXIF данные?

Раньше EXIF данные никак не использовал и о проблемах с этим делом не ведал.

Использовать начал дату снимка в плагине галерей изображений Taggallery. В этом плагине о добавляемом изображении создается запись, содержащая целых три поля даты: дата добавления в БД, дата изменения файла, дата снимка.

В настройках плагина можно указать сортировку картинок (как в админке, так и при выводе галерей в альбомах) по любому из полей, в том числе и по любой дате. Кроме того, можно указать: какая дата выводится, как дата картинки.

Очевидно, что красивее всего выглядит именно дата снимка. А дата снимка находится именно в EXIF.

Но и тут проблем не возникало. Дело в том, что удобнее загружать уже уменьшенные до нужного размера изображения. Ресайз удобно делать такими программами, как: Office Picture Manager или XnView, в которых EXIF не теряется.

Проблема возникла, когда я решил проставить водные метки изображениям, для чего приделал к плагину галерей Taggalery утилиту для наложения водных меток. Эта утилита позволяет просмотреть все возможные варианты наложения, выбрать оптимальный вариант и откатить, если что.

И тут оказалось, что при наложении водной метки EXIF теряются.

Конечно можно сперва добавить картинку в БД, считав дату из EXIF - затем уже наложить watermark. Но это как-то некрасиво.

Сохраняем EXIF при ресайзе и наложении водной метки на изображение.

Порыв интернет я нашел несколько библиотек для работы с EXIF, но без сучка без задоринки заработала только одна: PEL (PHP Exif Library).

Архив с примерами и классом: http://sourceforge.net/projects/pel/.

Вот как прикрутил к утилите Watermark:

// $full_path - полный путь к исходной картинке 
if ($wotermark_type) // $wotermark_typ - тип наложения для библиотеки GD2
{
   //каталог плагина галереи изображений
   $plugin_dir = getinfo('plugins_dir') . 'taggallery/';
   
   // подключаем exif-библиотеку pel
   require($plugin_dir . 'functions/exif/pel-0.9.1/PelJpeg.php');
  
   // получаем exif исхоного изображения
   $image1 = new PelJpeg();
   $image1->loadFile($full_path);        
   $exif = $image1->getExif(); 
  
   //Перед изменением создадим копию картинки для отката
   if (file_exists($tmp_file_path)) unlink($tmp_file_path);
   copy($full_path, $tmp_file_path);        
   $res_path = add_water_create_water($full_path , $wotermark_type , $userfile_water_file , $tmp_file_path); 
   
   // сохраняем exif в новое изображение
   $image2 = new PelJpeg();
   $image2->loadFile($res_path);        
   $image2->setExif($exif);
   file_put_contents($res_path, $image2->getBytes()); 
   if ($res_path == $full_path) echo '<div class="update">Вотермарк наложена. Если не устраивает - произведите откат.</div>';
   else echo '<div class="error">Ошибка создания Watermark.</div>';
}

Скачать обновленный плагин: taggallery23.zip

Еще записи по теме

Галерея изображений для MaxSite CMS Taggallery-2-5
Галерея изображений для MaxSite CMS Taggallery-2-5
Галерея изображений для MaxSite CMS Taggallery-2-0
Галерея изображений для MaxSite CMS Taggallery-2-0
Новая версия плагина галерей для MaxSite CMS Taggallery-2.2.
Новая версия плагина галерей для MaxSite CMS Taggallery-2.2.
Создание коллажа изображений Taggallery на MaxSite CMS.
Создание коллажа изображений Taggallery на MaxSite CMS.
Новая версия плагина галерей для MaxSite CMS Taggallery-2.1
Новая версия плагина галерей для MaxSite CMS Taggallery-2.1
Настраиваемое облако меток для MaxSite CMS.
Настраиваемое облако меток для MaxSite CMS.
Оставьте комментарий.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Выберите для анонимного комментирования (комментарий будет опубликован после проверки).

     

  

Выберите если нужно войти или зарегистрироваться и оставить комментарий от своего аккаунта.

Войти, используя

(обязательно)

Подписка на новости
discord

Email:

Регистрация

Вход через
Разделы
  • Пожарная сигнализация124
    • Инструкции13
    • Проекты2
  • Автоматика56
  • Отопление33
  • Мониторинг30
  • Электрика17
  • Пожаротушение32
  • Умный дом32
  • Arduino12
  • Гаджеты32
  • MaxSite CMS26
Актуальное
  • СП 484
  • Автоматизация теплого пола
  • Болид vs Рубеж
  • С2000-АСПТ
  • ПЦН в кармане
  • Системы противопожарной зашиты
  • Cloud IoT
  • Проектирование
  • Программирование
  • Ссылки
Последние комментарии
Можно ли использовать независимый расцепитель в противопожарных системах
  • Виталий » "Примечание. В статье применяется аббревиатура СПА (системы противопожарной автоматики), которая может резать глаза. Но к ней стоит привыкать, ибо аббревиатуру...
  • Андрей » Неправда Ваша. "Мысль изречённая есть ложь." Но это и не система сигнализации, а система оповещения.
  • Андрей » Замечательная статья, все по делу, все по полочкам, основательный инженерный подход, спасибо! И я тоже проходил подобные искания и копания,...
  • Андрей » Спасибо. Если данный участок расположен внутри щита (шкафа) управления вентиляцией, то контролировать его целостность не требуется, т.к. этот участок не подпадает...
  • Андрей » Думаю для данного случая подходит вариант из п.3.20: "между системой пожарной автоматики и другими инженерными системами" Корпус щита, шкафа вентиляции не является...
Последние загрузки
Все загрузки
Дискуссии на форуме
  • КПБ
  • Выбор ОПС для коттеджа
  • Отключение питания раздвижных дверей при пожарном сценарии.
Реклама

1080P WIFI IP Camera PTZ 5X Optical Zoom Speed Dome ONVIF CCTV Outdoor Waterproof 2MP Two Way Audio Camera Hiseeu

Hikvision Compatible Anpviz 5MP Bullet IP Camera POE Outdoor/Indoor 30m IR Security Camera With Microphone Audio Onvif IP66

Twitch T01 Magnetic Micro USB Type C Cable For iPhone Xiaomi Mobile Phone Fast Charging USB Cable Magnetic Charger Wire Cord

Пожарка 126 Проектирование 98 Болид 64 Лекции 58 Социальное 53 Рубеж 49 Обзор 47 Автоматика 45 Инженерные системы 38 Адресные системы 35 Курьез 35 Практикум 35 Пожаротушение 34 Отопление 33 Интернет Вещей 29 MaxSite 28 ГОСТ 26 Терморегуляторы 24 Облачный Сервис 24 Мониторинг 22 Плагин 21 Теплый пол 21 AliExpress 20 Сравнение 20 ППУ 20 Вентиляция 20 Законы Ома 19 СП 484 19 Техобслуживание 19 Эксплуатация 18 ППК 17 Астра 17 Клапана 15 Электрика 14 С2000-АСПТ 14 Рубикон 13 Arduino 13 Оповещение 13 WiFi 12 С2000М 12 Ritm 11 Гранд Магистр 11 Насосная Станция 11 Датчики 11 ESP8266 10 Юнитест 10 ВЭРС 9 ПЦН 9 Авария 8 Жилой дом 8 Сценарии 8 Программирование 7 Отзыв 7 Освещение 7 Taggallery 7 Диспетчеризация 7 Сообщества 7 Плазма-Т 6 С2000-СП4 5 Спрут-2 5 Гаджеты 5 ПО 5 МПТ 4 МПН 4 GeoRITM 4 Радиоканал 4 Версет 3 Гранит 3 ИПДЛ 3 Учет ресурсов 3 Баня 3 РИП 3 Рубеж-2ОП 3 Navigard 3 Firesec3 3 My_ESP8266 3 Visio 3 ТО 2 Гидравлика 2 Zigbee 2 Security Hub 2
  • Обратная связь
  • Карта сайта
  • Отзыв
  • События
  • Комментарии
  • Форум
© Технические заметки 2026. Работает на MaxSite CMS. ( Вход )
Автор не несет ответственность за последствия применения материалов сайта на практике.