Добрый день. Хочу поделиться с разработчиками такой историей.
Вводные: 1С с номенклатурой с картинками. Картинки все 1000х1000. Надо выгрузить товары на сайт, создать детальную картинку и картинку для анонса. Детальная картинка остается 1000х1000, анонс уменьшается до "не более 130px по ширине".
Варианты: сделал страничку с компонентом catalog.import.1c. Настроил инфоблок, установил для импорта "Использовать настройки инфоблока для обработки изображений". Выгружает и детальную, и анонс размером 130px. Снял "Использовать настройки инфоблока для обработки изображений" - установил в настройках импорта нужные величины. Теперь выгружается как надо, однако качество генерируемых картинок анонса резко упало.
Проблема: помимо того, что компонент импорта некорректно работает с настройками инфоблока, - нет никакой возможности контролировать процесс выгрузки и обработки картинок.
Решение: решение нехорошее, но рабочее. В файле /bitrix/modules/iblock/classes/general/cml2.php на строке 175 стоит вызов стандартной функции обработчика изображений
Сама функция подробно описана
И как видно для импорта вообще не используются дополнительные параметры. Такие как, например, METHOD.
Короче при импорте из 1С картинки уменьшаются при помощи imagecopyresized, а не imagecopyresample, что и приводит к адскому качеству превьюшек.
Я сделал так:
и получил желаемое.
Я подозреваю, что эта особенность связана с желанием уменьшить нагрузку на сервер в процессе импорта. Действительно при 10 000 товаров это значительная экономия ресурсов. С другой стороны, мне нужно импортировать 20 товаров, я могу себе позволить ресэмплить фотографии, почему бы не дать мне такую возможность?
Хотелось бы, чтобы разработчики разъяснили - это фича или баг? Потому что, конечно, хачить ядро - это совсем не то, что хочется делать в случае Битрикс)))
С уважением, Александр.
Вводные: 1С с номенклатурой с картинками. Картинки все 1000х1000. Надо выгрузить товары на сайт, создать детальную картинку и картинку для анонса. Детальная картинка остается 1000х1000, анонс уменьшается до "не более 130px по ширине".
Варианты: сделал страничку с компонентом catalog.import.1c. Настроил инфоблок, установил для импорта "Использовать настройки инфоблока для обработки изображений". Выгружает и детальную, и анонс размером 130px. Снял "Использовать настройки инфоблока для обработки изображений" - установил в настройках импорта нужные величины. Теперь выгружается как надо, однако качество генерируемых картинок анонса резко упало.
Проблема: помимо того, что компонент импорта некорректно работает с настройками инфоблока, - нет никакой возможности контролировать процесс выгрузки и обработки картинок.
Решение: решение нехорошее, но рабочее. В файле /bitrix/modules/iblock/classes/general/cml2.php на строке 175 стоит вызов стандартной функции обработчика изображений
| Код |
|---|
$resized = CIBlock::ResizePicture(CFile::MakeFileArray($new_file), array( "WIDTH" => $resize[0], "HEIGHT" => $resize[1] )); |
Сама функция подробно описана
И как видно для импорта вообще не используются дополнительные параметры. Такие как, например, METHOD.
Короче при импорте из 1С картинки уменьшаются при помощи imagecopyresized, а не imagecopyresample, что и приводит к адскому качеству превьюшек.
Я сделал так:
| Код |
|---|
$resized = CIBlock::ResizePicture(CFile::MakeFileArray($new_file), array( "WIDTH" => $resize[0], "HEIGHT" => $resize[1], // by moro "METHOD" => "resample", "COMPRESSION" => "95", // end by moro )); |
и получил желаемое.
Я подозреваю, что эта особенность связана с желанием уменьшить нагрузку на сервер в процессе импорта. Действительно при 10 000 товаров это значительная экономия ресурсов. С другой стороны, мне нужно импортировать 20 товаров, я могу себе позволить ресэмплить фотографии, почему бы не дать мне такую возможность?
Хотелось бы, чтобы разработчики разъяснили - это фича или баг? Потому что, конечно, хачить ядро - это совсем не то, что хочется делать в случае Битрикс)))
С уважением, Александр.
