本文整理汇总了PHP中ImagickPixel::isSimilar方法的典型用法代码示例。如果您正苦于以下问题:PHP ImagickPixel::isSimilar方法的具体用法?PHP ImagickPixel::isSimilar怎么用?PHP ImagickPixel::isSimilar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ImagickPixel
的用法示例。
在下文中一共展示了ImagickPixel::isSimilar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generateImage
//.........这里部分代码省略.........
$demerit_n4 = floor(abs((100 * (substr_count($ver, chr($bit_r)) / $byte_num) - 50) / 5)) * 10;
$n2_search1 = "/" . chr($bit_r) . chr($bit_r) . "+/";
$n2_search2 = "/" . chr(255) . chr(255) . "+/";
$demerit_n2 = 0;
preg_match_all($n2_search1, $ver_and, $ptn_temp);
foreach ($ptn_temp[0] as $str_temp) {
$demerit_n2 += strlen($str_temp) - 1;
}
$ptn_temp = array();
preg_match_all($n2_search2, $ver_or, $ptn_temp);
foreach ($ptn_temp[0] as $str_temp) {
$demerit_n2 += strlen($str_temp) - 1;
}
$demerit_n2 *= 3;
$ptn_temp = array();
preg_match_all($n1_search, $hor, $ptn_temp);
foreach ($ptn_temp[0] as $str_temp) {
$demerit_n1 += strlen($str_temp) - 2;
}
$demerit_score = $demerit_n1 + $demerit_n2 + $demerit_n3 + $demerit_n4;
if ($demerit_score <= $min_demerit_score || $i == 0) {
$mask_number = $i;
$min_demerit_score = $demerit_score;
}
$i++;
}
$mask_content = 1 << $mask_number;
# --- format information
$format_information_value = $ec << 3 | $mask_number;
$format_information_array = array("101010000010010", "101000100100101", "101111001111100", "101101101001011", "100010111111001", "100000011001110", "100111110010111", "100101010100000", "111011111000100", "111001011110011", "111110110101010", "111100010011101", "110011000101111", "110001100011000", "110110001000001", "110100101110110", "001011010001001", "001001110111110", "001110011100111", "001100111010000", "000011101100010", "000001001010101", "000110100001100", "000100000111011", "011010101011111", "011000001101000", "011111100110001", "011101000000110", "010010010110100", "010000110000011", "010111011011010", "010101111101101");
$i = 0;
while ($i < 15) {
$content = substr($format_information_array[$format_information_value], $i, 1);
$matrix_content[$format_information_x1[$i]][$format_information_y1[$i]] = $content * 255;
$matrix_content[$format_information_x2[$i + 1]][$format_information_y2[$i + 1]] = $content * 255;
$i++;
}
$mib = $max_modules_1side + 8;
$this->imagePath = $this->imagePath . "/qrv" . $version . ".png";
$image = new \Imagick($this->imagePath);
$draw = new \ImagickDraw();
if ($this->fillColor != "black") {
$clut = new \Imagick();
$clut->newImage(1, 1, new \ImagickPixel($this->fillColor));
$image->clutImage($clut);
$clut->destroy();
unset($clut);
}
$draw->setFillColor(new \ImagickPixel($this->fillColor));
$draw->setStrokeColor(new \ImagickPixel($this->strokeColor));
$i = 4;
$mxe = 4 + $max_modules_1side;
$ii = 0;
while ($i < $mxe) {
$j = 4;
$jj = 0;
while ($j < $mxe) {
if ($matrix_content[$ii][$jj] & $mask_content) {
$draw->point($i, $j);
}
$j++;
$jj++;
}
$i++;
$ii++;
}
$image->drawImage($draw);
if ($this->blockImage) {
$blockSize = $this->blockImage->getImageWidth();
$image->resizeImage($mib * $blockSize, $mib * $blockSize, \Imagick::FILTER_POINT, 1);
$testPixel = new \ImagickPixel($this->fillColor);
for ($x = 0; $x < $image->getImageWidth(); $x += $blockSize) {
for ($y = 0; $y < $image->getImageHeight(); $y += $blockSize) {
if ($testPixel->isSimilar($image->getImagePixelColor($x, $y), 1)) {
$image->compositeImage($this->blockImage, $this->overlayBlockImage ? \Imagick::COMPOSITE_OVER : \Imagick::COMPOSITE_REPLACE, $x, $y);
}
}
}
}
$geo = $image->getImageGeometry();
if (!empty($this->width) && $geo['width'] <= $this->width) {
if (!$this->width) {
$this->width = 0;
} else {
if ($this->width < $image->getImageWidth()) {
$this->width = $image->getImageWidth();
}
}
$remaining_pixels = $this->width % $geo['width'];
$fit_width = $this->width - $remaining_pixels;
$image->resizeImage($fit_width, $fit_width, \Imagick::FILTER_POINT, 1);
//FILTER_POINT
$tmp = new \Imagick();
$tmp->newImage($this->width, $this->width, 'none', 'png');
$tmp->compositeImage($image, \Imagick::COMPOSITE_OVER, floor($remaining_pixels / 2), floor($remaining_pixels / 2));
$image->destroy();
$image =& $tmp;
}
return $image;
}