Я использую imagick с php для изменения загруженных изображений. Я хочу удалить белый вокруг изображения, чтобы сделать его прозрачным. Используя это:
$val = 65535/15; $val = intval($val/1);//divide by 1 means accept full fuzz at the moment $image->paintTransparentImage("rgb(255,255,255)", 0.0, intval(1*$val);
Однако, если я загружу изображение кого-то с белыми зубами, это заставляет их зубы исчезнуть! Так что я пропущу что-то, что я мог бы сделать, чтобы предотвратить это, или я должен просто отказаться от этой идеи?
Благодаря комментариям я придумал это решение:
//15 is the degree of fuzz user can choose in page $val = 65535/15; //divide by fuzz dilution, 1 is none $val = floatval($val/1); //create white border $image->borderImage ( "rgb(255,255,255)" , 1 , 1 ); //make all white fill fuchsia $image->floodFillPaintImage ( "rgb(255, 0, 255)" ,$userfuzz*$val, "rgb(255,255,255)", 0 , 0, false); //make fuchsia transparent $image->paintTransparentImage("rgb(255,0,255)", 0.0, 10); //remove border 1px that was added above $image->shaveImage ( 1 , 1 );
Просто нужно сообщить людям, что фуксия несовместима с веб-сайтом;)