Настройте внешний вид родной капчи magento. Изменение количества линий и точек


Всем привет
Я хочу изменить расположение моей капчи в контактной форме. Мне нужно уменьшить количество линий и точек, которые он содержит, чтобы пользователь мог видеть текст более четко.
У кого-нибудь есть идеи, как это сделать?
Заранее спасибо.

Author: Jaimin Sutariya, 2013-12-04

4 answers

То, как вы ответили выше, не является хорошим подходом.

Класс Zend_Captcha_Image предоставил функции для изменения переменных. Вы можете найти функции в том же классе, которые будут выглядеть примерно так:

public function setDotNoiseLevel ($dotNoiseLevel)
{
    $this->_dotNoiseLevel = $dotNoiseLevel;
    return $this;
}
/**
 * @param int $lineNoiseLevel
 */
public function setLineNoiseLevel ($lineNoiseLevel)
{
    $this->_lineNoiseLevel = $lineNoiseLevel;
    return $this;
}

, А также Zend_Captcha_Image распространяется на класс моделей Магов, т.е. Mage_Captcha_Model_Zend. Таким образом, вы можете легко переопределить этот класс модели Mage, чтобы установить эти переменные.

В Mage_Captcha_Model_Zend:

В Mage_Captcha_Model_Zend:
public function __construct($params)
{
    if (!isset($params['formId'])) {
        throw new Exception('formId is mandatory');
    }
    $this->_formId = $params['formId'];
    $this->setExpiration($this->getTimeout());

    $this->setDotNoiseLevel(10);     // Added code
    $this->setLineNoiseLevel(0);     // Added code
}

Я устанавливаю эти переменные в конструкторе, чтобы изменения работали даже для загрузки страницы, а также для обновления капчи.

Будет лучше, если вы переопределите вышеуказанную функцию вместо изменения файлов ядра mage.

 11
Author: Mr_Green, 2020-06-15 08:30:17

Вы можете изменить шум капчи, используя приведенный ниже код.

Перейдите к : lib/Zend/Captcha/Image.php

Измените значения переменных ниже в соответствии с вашими требованиями

protected $_dotNoiseLevel = 10; // Increase the value if you want to increase amount of dots
protected $_lineNoiseLevel = 0; // Increase the value if you want to increase amount of lines

Ссылка: http://magentoforall.blogspot.com.au/2012/11/magento-change-captcha-background-lines.html

 8
Author: Jaimin Sutariya, 2013-12-04 11:20:57

Для Magento 2: Перейдите в vendor\magento\zendframework1\library\Zend\Captcha\Image.php

Ниже вы найдете функции в этом файле, которые можно использовать для настройки изображения капчи.

     /**
     * Set dot noise level
     *
     * @param int $dotNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setDotNoiseLevel ($dotNoiseLevel)
    {
        $this->_dotNoiseLevel = $dotNoiseLevel;
        return $this;
    }

    /**
     * Set line noise level
     *
     * @param int $lineNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setLineNoiseLevel ($lineNoiseLevel)
    {
        $this->_lineNoiseLevel = $lineNoiseLevel;
        return $this;
    }

Вы можете изменить значения этой функции из строк 122 и 129.

/**
 * Number of noise dots on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_dotNoiseLevel = 100;
/**
 * Number of noise lines on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_lineNoiseLevel = 5;
 3
Author: Dinesh Yadav, 2017-03-07 05:12:06

Вышесказанное не будет работать для Magento 2.3.4. В коде и пути к файлу внесены незначительные изменения. Вы можете прочитать ниже, чтобы уменьшить уровень шума для изображений с капчей.

Функции для уменьшения шума setdotnoiselevel и setlIneNoiseLevel одинаковы, но код перемещен в следующий файл.

Vendor/zendframework/zend-captcha/src/Image.php

Вы можете либо изменить следующий код в основном файле.

protected $dotNoiseLevel = 10; 
protected $lineNoiseLevel = 1;

ИЛИ вы можете переписать файл в локальном формате, это наиболее точный и рекомендуемый способ.

  1. Добавьте код в di.xml

<preference for="Magento\Captcha\Model\DefaultModel" type="CodeMasterz\Utility\Model\Captcha\DefaultModel"/>

  1. Создайте файл по адресу app/code/CodeMasterz/Utility/Model/Captcha/DefaultModel.php и добавьте в него код ниже.
<?php

namespace CodeMasterz\Utility\Model\Captcha;

class DefaultModel extends \Magento\Captcha\Model\DefaultModel 
{


    public function __construct(

    \Magento\Framework\Session\SessionManagerInterface $session,
    \Magento\Captcha\Helper\Data $captchaData,
    \Magento\Captcha\Model\ResourceModel\LogFactory $resLogFactory,
    $formId
    ) 
    {
        parent::__construct($session,$captchaData,$resLogFactory,$formId);

        
        $this->setDotNoiseLevel(10);    //  S:VA
        $this->setLineNoiseLevel(0); 
    } 
}
  1. Выполните следующие команды.
bin/magento cache:clean layout
bin/magento c:c                       
bin/magento c:f
rm -rf generated/*
 1
Author: Vaseem Ansari, 2020-06-16 06:20:16