Imagick::roundCorners
(PECL imagick 2, PECL imagick 3)
Imagick::roundCorners — Rounds image corners
警告
 此函数在 Imagick 3.4.4 中被 废弃,强烈建议不要应用此函数。
说明
   public Imagick::roundCorners(
float
float
float
float
float
): bool
  float
$x_rounding,float
$y_rounding,float
$stroke_width = 10,float
$displace = 5,float
$size_correction = -6): bool
Rounds image corners. The first two parameters control the amount of rounding and the three last parameters can be used to fine-tune the rounding process. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。 此方法在 Imagick 基于 ImageMagick 7.0.0 或以上版本编译时不可用。
参数
x_rounding- 
      
x rounding
 y_rounding- 
      
y rounding
 stroke_width- 
      
stroke width
 displace- 
      
image displace
 size_correction- 
      
size correction
 
返回值
   成功时返回 true。
  
示例
示例 #1 Using Imagick::roundCorners():
Rounds the image corners
<?php
$image = new Imagick();
$image->newPseudoImage(100, 100, "magick:rose");
$image->setImageFormat("png");
$image->roundCorners(5,3);
$image->writeImage("rounded.png");
?>
  +添加备注
  
用户贡献的备注 2 notes
  
  
  ar2rsoft at gmail dot com ¶
  
 
5 years ago
  Alternative solution:
// example values
$width = 250;
$height = 250;
$cornerRadius = 10;
// create mask image
$mask = new Imagick();
$mask->newImage($width, $height, new ImagickPixel('transparent'), 'png');
// create the rounded rectangle
$shape = new ImagickDraw();
$shape->setFillColor(new ImagickPixel('black'));
$shape->roundRectangle(0, 0, $width, $height, $cornerRadius, $cornerRadius);
// draw the rectangle
$mask->drawImage($shape);
// apply mask
$image->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0);
I found solution here:
https://github.com/Imagick/imagick/issues/213#issuecomment-385928740