FloodFillPaintImage x 起始位置和 y 起始位置

FloodFillPaintImage x start position and y start position

我是 Imagick 的新人。我正在尝试从图像的所有角落填充 FillPaintImage。

<?php
$im = new Imagick("test.jpg");
$im->scaleImage(0, 200);
$backgroundColor = $im->getImageBackgroundColor();
$im->floodfillPaintImage(new ImagickPixel('transparent'),300,$backgroundColor,0,0,false);
$im->floodfillPaintImage(new ImagickPixel('transparent'),300,$backgroundColor,200,0,false);
$im->trimImage(10);
$im->writeImage("test2.jpg");
$im->destroy();

在第一种情况下,当 x 起始位置和 y 起始位置为 0 和 0 可敬性时,它有效。但是当我尝试将 x 起始位置设置为 200 并将 y 起始位置设置为 0 时。它会引发错误。

我的图像假设为 200x200,我的代码假设 运行 没有任何错误。但是,它没有 运行。

当我将 x 起始位置设置为 150,将 y 起始位置设置为 0 时。然后就可以了。

您正试图从图像边界外进行填充。

一张 200x200 像素的图像的坐标范围为 (0, 0) 到 (199, 199)。

更一般地,W * H 像素图像的坐标范围从 (0, 0) 到 (W-1, H-1)。


阅读您的评论后,您似乎希望图像已缩放到 200x200 像素。希望以下内容对您有所帮助:

$im = new Imagick("test.jpg");

$im->scaleImage(0, 200);
list($w, $h) = array_values($im->getImageGeometry());

$backgroundColor  = $im->getImageBackgroundColor();
$transparentColor = new ImagickPixel('transparent');

$im->floodfillPaintImage($transparentColor, 300, $backgroundColor, 0,      0,      false);
$im->floodfillPaintImage($transparentColor, 300, $backgroundColor, $w - 1, 0,      false);
$im->floodfillPaintImage($transparentColor, 300, $backgroundColor, 0,      $h - 1, false);
$im->floodfillPaintImage($transparentColor, 300, $backgroundColor, $w - 1, $h - 1, false);

$im->trimImage(10);
$im->writeImage("test2.jpg");

$im->destroy();