我是Imagick的新人。我试图从图像的所有角落泛滥填充图像。
<?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.然后它可以工作。
答案 0 :(得分: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();