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