當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP Imagick floodFillPaintImage()用法及代碼示例


Imagick floodFillPaintImage()函數是PHP中的內置函數,用於更改與目標匹配的任何像素的顏色值,以及與之相鄰的相同顏色的像素。

注意:此方法替代不推薦使用的Imagick::paintFloodFillImage()函數,並且如果Imagick是針對ImageMagick 6.3.8或更高版本編譯的,則此方法可用。

用法:


bool Imagick::floodFillPaintImage 
( mixed $fill, float $fuzz, mixed $target, int $x, int $y, bool $invert 
[, int $channel = Imagick::CHANNEL_DEFAULT ] )  

參數:從上麵的語法中可以看到,該函數具有七個參數。他們是:

  • fill (Mixed type):此參數是ImagickPixel對象或包含填充顏色的字符串,使用此函數我們需要在像素上填充該顏色。
  • fuzz (Float type):此參數定義模糊的數量。模糊值基於圖像顏色的強度。
  • target (Mixed type):此參數是ImagickPixel對象或包含要繪製的目標顏色的字符串。
  • x (Int type):此參數給出溢流的X坐標開始位置。
  • y(Int type):此參數給出溢流口的Y坐標開始位置。
  • invert (Mixed type):如果設置為TRUE,則將繪製與目標顏色不匹配的任何像素。簡而言之,這是相反的方法(因此反轉),以填充除目標顏色以外的其餘像素。如果我們隻希望填充目標顏色,則默認情況下將其設置為FALSE。
  • channel (Int type):此參數用於提供根據我們的要求有效的任何通道常數。如果不需要通道,則無需定義它(隻能將函數與上述六個參數一起使用)。

注意:在此處“混合類型”的上下文中,請注意,PHP中的“混合”關鍵字不是原始類型,因此不能在編程中使用。此處使用混合類型表示該類型可以是任何類型。

返回值:成功時函數返回True。

以下示例說明了PHP中的Imagick::floodFillPaintImage()函數:

例:讓我們考慮兩個塊,一個黑色和一個綠色(190×90尺寸):

現在,我們將編寫一個PHP程序來說明Imagick::floodFillPaintImage()函數。

  • 程序:
    <?php 
       
     // Create new imagick objects for the blocks under one name:  
     $imagick = new Imagick( 
    'https://media.geeksforgeeks.org/wp-content/uploads/20190720123909/black1.png" 
         alt=""
         width="190" 
         height="90" 
         class="alignnone  
         size-full wp-image-1167659'); 
     $imagick = new Imagick( 
     'https://media.geeksforgeeks.org/wp-content/uploads/20190720123923/green3.png" 
         alt=""
         width="190"
         height="90"
         class="alignnone 
         size-full wp-image-1167665'); 
                      
     // Append the images into one: 
     $imagick->resetIterator(); 
     $combined = $imagick->appendImages(true); 
       
     // Save the image for comparison: 
     $combined->writeImage("blackgreenobjects.png"); 
       
     // Set (x, y) values for the target pixel to paint: 
     $x = 1; 
     $y = 1; 
       
     // Get the color we are painting: 
     $target = $combined->getImagePixelColor($x, $y); 
       
     // Paints pixel in position (1, 1) and all neighboring pixels  
    //that match the target color (black) to green color: 
     $combined->floodfillPaintImage("green", 1, $target, $x, $y, false); 
       
     // Save the resulting image: 
     $combined->writeImage("greengreenfill.png");  
       
     // Display resulting image: 
     echo $combined;                    
       
    ?>

輸出:此代碼將首先使用一個名稱(黑色和綠色塊)創建兩個Imagick對象,然後將它們附加到其中(連續對象被附加在第一個對象下方)。

  • 保存的圖像如下所示:
  • 然後,使用floodfillPaintImage()函數,將在(x = 1,y = 1)位置的像素及其相鄰像素的顏色/填充為綠色。 (1,1)位置的像素被塗成黑色(作為第一個塊),因此該像素及其相鄰的黑色像素(在鏈中直到顏色改變為止,填充都像“泛濫”的擴散)充滿我們給定的綠色。
    保存的圖像如下所示:

注意:如果您在目標顏色為綠色的情況下再次使用該函數,則我們最初定義的兩個塊都將變為填充顏色,因為它們現在都具有相同的顏色。



相關用法


注:本文由純淨天空篩選整理自Anirban166大神的英文原創作品 PHP | Imagick floodFillPaintImage() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。