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();
我是 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();