Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[HowTo] Пакетная обработка изображений товаров (обрезание краев)


Recommended Posts

Так получилось, что в курируемом мной магазине большинство изображений товаров имеют вокруг изображения самого товара огромные пустые поля.


Я решил данную проблему путем рекурсивного обхода папки image/import_files и обработкой всех файлов изображений функцией trimImage.


 


Раньше в этой теме была просьба о помощи в решение проблемы порчи изображений товаров при обрезании краев и последующем ресайзе. Видимо, что-то пошло не так при первом проходе скрипта. При повторном запуске все проблемы исчезли сами собой :).


 


Раз проблема решена сама собой, поделюсь с сообществом этим обработчиком:



<?php
 
trimProductImages(DIR_IMAGE."import_files/");
 
// В качестве аргумента передаем путь(имя) до папки.
 
function trimProductImages($patch) {
 
$handle = opendir($patch);
 
  while(($file = readdir($handle))) {
    set_time_limit(0);
 
    if (is_file ($patch."/".$file) && (getExtension1($file) == "jpg" || getExtension1($file) == "jpeg" || getExtension1($file) == "png") )  
    {
 
      echo $patch .  "/" . $file . "\n";
 
      $image = new Imagick($patch."/".$file);
      $image->trimImage(0);
      $image->writeImage($patch."/".$file);
    }
 
    if (is_dir ($patch."/".$file) && ($file != ".") && ($file != ".."))
    {
      /* рекусрсивно проходим по директории*/
      trimProductImages($patch."/".$file);  // Обходим вложенный каталог
 
    }
  }
 
  closedir($handle);
 
}
 
function getExtension1($filename) {
  // Возвращаем расширение файла
  return substr($filename, strrpos($filename, '.') + 1);
}
 
?>

Установка:


  • сохранить скрипт в папку images/import_files/
  • запустить в браузере

Обязательно делайте бекап папки изображений, перед тем как запускать скрипт! 


Если видите испорченные изображения, значит у вас тоже что-то пошло не так и необходимо произвести процедуру повторно.


Ни в коем случае не запускайте обработчик на боевом сервере! Только на локальной машине с последующей заменой файлов изображений на рабочем сайте на полученные в результате работы скрипта.


 


Для работы скрипта требуется PHP с ImageMagick.


Так как изображений может быть несколько тысяч, задайте в php.ini максимальное время выполнения скрипта в (max_execution_time) в районе нескольких минут.


Надіслати
Поділитися на інших сайтах

bnku, замените в коде заплатку($patch) на путь($path).

вместо

$_SERVER['DOCUMENT_ROOT']."/image/import_files"
лучше использовать

DIR_IMAGE."import_files/"
или

"./image/import_files/"
потому что магазин может быть установлен в поддиректории.
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.