• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock.php
  • Класс: CAllIBlock
  • Вызов: CAllIBlock::FilterPicture
static function FilterPicture($filePath, $arFilter)
{
	if (!file_exists($filePath))
	{
		return false;
	}
	if (
		!isset($arFilter['name'])
		|| ($arFilter['name'] !== 'sharpen' && $arFilter['name'] !== 'watermark')
	)
	{
		return false;
	}

	$image = new Image($filePath);
	$imageInfo = $image->getInfo();
	if (empty($imageInfo))
	{
		return false;
	}
	if (!$image->load())
	{
		return false;
	}

	$orientation = 0;
	$exifData = $image->getExifData();
	if (isset($exifData['Orientation']))
	{
		$orientation = $exifData['Orientation'];
	}
	$image->autoRotate($orientation);
	switch ($arFilter['name'])
	{
		case 'sharpen':
			$image->filter(ImageMask::createSharpen($arFilter['precision']));
			break;
		case 'watermark':
			if ($arFilter['type'] === 'text' && mb_strlen($arFilter['text']) > 1 && $arFilter['coefficient'] > 0)
			{
				$arFilter['text_width'] = ($imageInfo->getWidth() - 5) * $arFilter['coefficient'] / 100;
			}
			$watermark = ImageWatermark::createFromArray($arFilter);
			$image->drawWatermark($watermark);
			break;
	}
	$image->save(self::getDefaultJpegQuality());
	$image->clear();

	return true;
}