当前位置: 首页>>代码示例>>PHP>>正文


PHP ImagickPixel::isSimilar方法代码示例

本文整理汇总了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;
 }
开发者ID:drewjw81,项目名称:clear-qr,代码行数:101,代码来源:ClearQR.php


注:本文中的ImagickPixel::isSimilar方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。