- Модуль: 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;
}