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)位置的像素被塗成黑色(作為第一個塊),因此該像素及其相鄰的黑色像素(在鏈中直到顏色改變為止,填充都像“泛濫”的擴散)充滿我們給定的綠色。
保存的圖像如下所示:
注意:如果您在目標顏色為綠色的情況下再次使用該函數,則我們最初定義的兩個塊都將變為填充顏色,因為它們現在都具有相同的顏色。
相關用法
- PHP Imagick readImageFile()用法及代碼示例
- PHP Imagick remapImage()用法及代碼示例
- PHP Imagick readImage()用法及代碼示例
- PHP Imagick distortImage()用法及代碼示例
- PHP Imagick extentImage()用法及代碼示例
- PHP Imagick readImages()用法及代碼示例
- PHP Imagick separateImageChannel()用法及代碼示例
- PHP Imagick sepiaToneImage()用法及代碼示例
- PHP Imagick convolveImage()用法及代碼示例
- PHP Imagick despeckleImage()用法及代碼示例
- PHP Imagick setColorspace()用法及代碼示例
- PHP Imagick getCopyright()用法及代碼示例
- PHP Imagick gaussianBlurImage()用法及代碼示例
- PHP Imagick enhanceImage()用法及代碼示例
- PHP Imagick encipherImage()用法及代碼示例
注:本文由純淨天空篩選整理自Anirban166大神的英文原創作品 PHP | Imagick floodFillPaintImage() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。