protected function _generateByImagic($code, $width, $height)
{
$image = new \Imagick();
$draw = new \ImagickDraw();
$image->newImage($width, $height, new \ImagickPixel('rgb(' . $this->_bgRGB . ')'));
$draw->setFont($this->alias->resolve($this->_fonts[(int) (mt_rand() % count($this->_fonts))]));
$draw->setGravity(\Imagick::GRAVITY_NORTHWEST);
$referenceFontSize = min($height, $width / $this->_length);
$x = mt_rand($referenceFontSize * 0.1, $referenceFontSize * 0.3);
$length = strlen($code);
$fgPixel = new \ImagickPixel();
/** @noinspection ForeachInvariantsInspection */
for ($i = 0; $i < $length; $i++) {
$fontSize = $referenceFontSize * mt_rand(800, 1000) / 1000;
$draw->setFontSize($fontSize);
$fgPixel->setColor('rgb(' . mt_rand(0, 240) . ',' . mt_rand(0, 240) . ',' . mt_rand(0, 240) . ')');
$draw->setFillColor($fgPixel);
$angle = mt_rand(-$this->_angleAmplitude, $this->_angleAmplitude);
$y = ($height - $referenceFontSize) * mt_rand(-1000, 1000) / 1000;
$image->annotateImage($draw, $x, $y, $angle, $code[$i]);
$x += $fontSize * mt_rand(600, 800) / 1000;
for ($k = 0; $k < $this->_noiseCharCount; $k++) {
$letter = $this->_charset[(int) (mt_rand() % strlen($this->_charset))];
$fgPixel->setColor('rgb(' . mt_rand(0, 240) . ',' . mt_rand(0, 240) . ',' . mt_rand(0, 240) . ')');
$draw->setFillColor($fgPixel);
$draw->setFontSize($fontSize * 0.4 * $this->_rand_amplitude(0.1));
$angle = mt_rand(-40, 40);
$image->annotateImage($draw, $x + mt_rand(-700, 700) / 1000 * $fontSize, $fontSize / 2 + mt_rand(-$fontSize * 0.5, $fontSize * 0.5), $angle, $letter);
}
}
$this->response->setContentType('image/jpeg');
$image->setImageFormat('jpeg');
$this->response->setContent((string) $image);
$image->destroy();
$fgPixel->destroy();
$draw->destroy();
return $this->response;
}