函式名: ImagickPixelIterator::newPixelRegionIterator()
適用版本: Imagick >= 3.0.0
用法: ImagickPixelIterator::newPixelRegionIterator() 方法用於建立一個新的畫素迭代器,該迭代器用於遍歷指定區域的畫素。它返回一個 ImagickPixelIterator 物件。
語法:
public ImagickPixelIterator ImagickPixelIterator::newPixelRegionIterator ( Imagick $Imagick , int $x , int $y , int $columns , int $rows )
引數:
- $Imagick: 必需,一個 Imagick 物件,表示要遍歷的影象。
- $x: 必需,指定要遍歷的區域的起始 X 座標。
- $y: 必需,指定要遍歷的區域的起始 Y 座標。
- $columns: 必需,指定要遍歷的區域的寬度。
- $rows: 必需,指定要遍歷的區域的高度。
返回值: 該方法返回一個 ImagickPixelIterator 物件,用於遍歷指定區域的畫素。
示例: 以下示例演示瞭如何使用 ImagickPixelIterator::newPixelRegionIterator() 方法來遍歷指定區域的畫素,並列印每個畫素的 RGBA 值。
// 建立 Imagick 物件
$image = new Imagick('path/to/image.jpg');
// 獲取影象的寬度和高度
$width = $image->getImageWidth();
$height = $image->getImageHeight();
// 定義要遍歷的區域的起始座標和大小
$x = 100;
$y = 100;
$regionWidth = 200;
$regionHeight = 200;
// 建立畫素迭代器
$iterator = $image->newPixelRegionIterator($x, $y, $regionWidth, $regionHeight);
// 遍歷畫素
foreach ($iterator as $row => $pixels) {
foreach ($pixels as $column => $pixel) {
// 獲取當前畫素的 RGBA 值
$rgba = $pixel->getColor();
// 列印 RGBA 值
echo "Pixel at ($column, $row): R={$rgba['r']}, G={$rgba['g']}, B={$rgba['b']}, A={$rgba['a']}\n";
}
// 釋放記憶體
$iterator->syncIterator();
}
// 釋放記憶體
$iterator->clear();
$image->clear();
注意:在使用完 ImagickPixelIterator 物件後,應呼叫 syncIterator() 方法來同步迭代器,以便釋放記憶體。最後,應呼叫 clear() 方法來清除 Imagick 物件和 ImagickPixelIterator 物件,以防止記憶體洩漏。