Добавить шумы при создании картинки PHP


Dram
260

Таким кодом создаю картинку, но хотелось бы усложнить ее автоматическое распознавание. Пришла идея добавить шумы, но не могу загуглить примеры или как это называется. Мне нужны произвольные черные пиксели на картинку. Как это сделать?

              $image = imagecreatetruecolor(40, 15);

$fon = imagecolorallocatealpha($image, 255, 255, 255, 127);
imagecolortransparent($image, $fon);
imagefill($image, 0, 0, $fon);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 4, 0, 0, $item->value, $text_color);
ob_start();
imagepng($image);
$imagedata = ob_get_contents();
ob_end_clean();
echo '<img data-src="data:image/png;base64,'.base64_encode($imagedata).'" class="lazy"/>';


LEOnidUKG

А кто тебе сказал, что твой шум помещает распознать? 🙂


ArbNet

Сначала устанавливаешь картинку ImageCreateFromJpeg(‘captcha.jpg’); потом рисуешь на ней


Dram

LEOnidUKG, попробую, заодно пхп подучу.

ArbNet, хочу сделать шумы случайными.


LEOnidUKG

KCAPTCHA PROJECT VERSION 2.0 www.captcha.ru

//noise

$white=imagecolorallocate($font, 255, 255, 255);

$black=imagecolorallocate($font, 0, 0, 0);

for($i=0;$i<(($height-30)*$x)*$white_noise_density;$i++){

imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $white);

}

for($i=0;$i<(($height-30)*$x)*$black_noise_density;$i++){

imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $black);

}

———- Добавлено 04.06.2020 в 15:09 ———-

Dram:
LEOnidUKG, попробую, заодно пхп подучу.

Ты не учишь, ты сразу спрашиваешь как за тебя это сделать.


silicoid

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


SocFishing

Если вы хотите сделать шумы, то можно наклепать полупрозрачных PNG с цифрами пару десятков штук.

Предположим, у вас капча имеет размер 200х50 вы создаете 20 картинок с полупрозрачным фоном и на них накидываете кучу цифр отличных по шрифтам и более блеклой тональности. А дальше просто накладываете поверх своей картинки эту PNG.

Это вам даст хороший шум, а главное может запутать распознавание.

imagealphablending($png1, false)

imagealphablending($png2, false);

imagecopy($png1, $png2, 50, 200, 0, 0, imagesx($png2), imagesy($png2));

$result = imagepng($png1);

примерно, примеры погуглите

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *