• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/stresslevel/img.php
  • Класс: BitrixIntranetComponentUserProfileStressLevelImg
  • Вызов: Img::getImage
public function getImage(array $params = [])
{
	global $USER;

	$result = null;

	$factor = (
		isset($params['factor'])
			? intval($params['factor'])
			: 1
	);

	if (
		$factor < 1
		|| $factor > 10
	)
	{
		$factor = 1;
	}

	$this->factor = $factor;
	$checkSSL = $params["checkSSL"] ?? true;

	if (
		!$this->getImageSupport($checkSSL) ||
		!Loader::includeModule('socialnetwork')
	)
	{
		return $result;
	}

	$res = UserWelltoryTable::getList([
		'filter' => [
			'USER_ID' => $USER->getId()
		],
		'order' => [
			'ID' => 'DESC'
		],
		'limit' => 1
	]);
	if (!($measurementFields = $res->fetch()))
	{
		return $result;
	}

	$canvas = new Imagick();
	$transparentColor = new ImagickPixel('#00000000');

	$imageWidth = 322;
	$imageHeight = 104;

	$canvas->newImage($factor*$imageWidth, $factor*$imageHeight, $transparentColor);

	$this->drawImageBorder([
		'canvas' => $canvas,
		'width' => $imageWidth,
		'height' => $imageHeight
	]);

	$gradientCenter = [
		'x' => $factor*71,
		'y' => $factor*67
	];

	$this->drawImageGradient([
		'canvas' => $canvas,
		'center' => $gradientCenter
	]);
	$this->drawImageArrow([
		'canvas' => $canvas,
		'value' => $measurementFields['STRESS'],
		'center' => $gradientCenter
	]);
	$this->drawImagePowered([
		'canvas' => $canvas
	]);
	if (intval($factor) > 1)
	{
		$canvas->resizeImage($imageWidth, $imageHeight, Imagick::FILTER_LANCZOS, 1);
	}

	$factor = $this->factor = 1;
	$gradientCenter = [
		'x' => $factor*71,
		'y' => $factor*67
	];

	$this->drawImageRectangle([
		'canvas' => $canvas,
		'type' => $measurementFields['STRESS_TYPE'],
		'value' => $measurementFields['STRESS']
	]);
	$this->drawImageComment([
		'canvas' => $canvas,
		'value' => $measurementFields['STRESS_COMMENT']
	]);
	$metrics = $this->drawImageValue([
		'canvas' => $canvas,
		'value' => $measurementFields['STRESS'],
		'center' => $gradientCenter
	]);
	$this->drawImagePercent([
		'canvas' => $canvas,
		'metrics' => $metrics,
		'center' => $gradientCenter
	]);
	$this->drawImageCaption([
		'canvas' => $canvas,
		'center' => $gradientCenter
	]);

	$canvas->setImageFormat('png');
	$canvas->setCompressionQuality(1);

	$result = $canvas;

	return $result;
}